VSCode 设置 - 使用 Remote-SSH 时如何获取主机名

VSCode settings - how to get a hostname when using Remote-SSH

我正在通过 Remote-SSH 插件远程处理位于 GPU 集群上的 NFS 文件系统上的代码。该项目使用CMake。对于调试,我希望能够在集群上的任何机器上工作,并且我想使用特定于机器的构建目录。

是否有存储主机名的变量,以便我可以适当地编辑 settings.json 中的以下行?

"cmake.buildDirectory": "${workspaceFolder}/build-${whatever_variable_stores_hostname}"

由于 Remote-SSH 插件使用您的 ssh 配置文件,您可以在 ssh 配置中执行以下操作:

Host CLUSTERA
 User USERNAME
 HostName IP.ADDRESS.HERE
 IdentityFile ~/.ssh/YOUR.pem
 RequestTTY yes
 RemoteCommand export HOSTNAME=export HOSTNAME=`cat /proc/sys/kernel/hostname` && bash
  1. RemoteCommand 选项在服务器上远程执行命令
  2. RequestTTY yes强制ssh为会话分配一个PTY 如果你不这样做,你将获得一个非交互式会话。
  3. cat /proc/sys/kernel/hostname 获取主机名
  4. export HOSTNAME=`cat /proc/sys/kernel/hostname` && bash 并将主机名通过管道传递到环境变量调用 HOSTNAME,(您可以随意命名)并打开 shell.
  5. 然后您可以将其放入 VSCode
  6. 中的 setting.json
"cmake.buildDirectory": "${workspaceFolder}/build-${HOSTNAME}"

原来你可以使用 settings.json 中的环境变量,正如预期的那样,使用 ${env:your_var}

但是,一旦 VS Code 服务器启动,即使在关闭客户端 VS Code 远程连接后,它仍然保持 运行。所有后续连接仅检查现有的 VS Code 服务器安装并连接到它。因此,当您更新 ~/.bashrc 以设置额外的环境变量时,例如:

export HOST=`hostname`

VS Code 服务器环境将保持不变。

解决方案是在您的 VS Code 客户端中调用 Remote-SSH Kill VS Code Server on Host 命令以在您下次登录时强制重启服务器。您会注意到,在您下次登录后,VS Code 服务器安装日志将显示 printenv 命令的输出,现在应该反映对 ~/.bashrc 文件的更新。

关于 $HOSTNAME 变量的注释

出于某种原因,通常在您登录具有交互式会话的计算机时设置的 $HOSTNAME 变量未在 VS 代码服务器实例的环境中设置 - 这就是我最终使用的原因~/.bashrc.

中设置的自定义变量