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
RemoteCommand
选项在服务器上远程执行命令
RequestTTY yes
强制ssh为会话分配一个PTY
如果你不这样做,你将获得一个非交互式会话。
cat /proc/sys/kernel/hostname
获取主机名
export HOSTNAME=`cat /proc/sys/kernel/hostname` && bash
并将主机名通过管道传递到环境变量调用 HOSTNAME
,(您可以随意命名)并打开 shell.
- 然后您可以将其放入 VSCode
中的 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
.
中设置的自定义变量
我正在通过 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
RemoteCommand
选项在服务器上远程执行命令RequestTTY yes
强制ssh为会话分配一个PTY 如果你不这样做,你将获得一个非交互式会话。cat /proc/sys/kernel/hostname
获取主机名export HOSTNAME=`cat /proc/sys/kernel/hostname` && bash
并将主机名通过管道传递到环境变量调用HOSTNAME
,(您可以随意命名)并打开 shell.- 然后您可以将其放入 VSCode 中的
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
.