使用 remote-ssh 在 VS Code 中设置全局环境变量
Set global environment variables in VS Code with remote-ssh
我有这样的情况,我需要使用安装在 Windows 10 上的 VS Code,并且 运行 它在 RHEL 7.x 上具有扩展名 Remote - SSH。
默认的 RHEL 7.x 运行s 和 git 1.8.x。我已经安装了更新的 git 版本,但这不在默认的 $PATH 环境中。
我找到了这个说明https://code.visualstudio.com/docs/remote/wsl#_advanced-environment-setup-script,它描述了在使用 WSL 时如何专门为 VS Code 设置环境变量。
If you want to run additional commands or modify the environment this can be done in a setup script ~/.vscode-server/server-env-setup
这似乎只有在您使用 WSL 时才有效。为什么这不适用于 Remote - SSH extension?
我的特殊情况是在使用 VS Code 时我只需要 git>=2。当我通过 ssh 定期连接时,我想要并需要 OS 默认工具和设置。
这给了我一个特殊的要求,我不想编辑 ~/.bashrc
、~/.cshrc
或任何其他用户环境文件。
我希望能够仅为 VS Code 编辑环境。某种,也许像:
#!/bin/bash
export PATH=/opt/rh/rh-git29/root/usr/bin\:$PATH
export LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64:$LD_LIBRARY_PATH
...
#!/bin/csh
setenv PATH /opt/rh/rh-git29/root/usr/bin\:$PATH
setenv LD_LIBRARY_PATH /opt/rh/httpd24/root/usr/lib64:$LD_LIBRARY_PATH
...
有什么我还没有找到可以提出工作请求的地方吗?或者这是对 VS Code 团队的某种请求吗?
此致。
我想我在this issue comment中找到了解决方案,后续回复:
- 当 vscode-server 最初启动时,它使用登录名 shell,在您的主目录中获取
.profile
。
- 但是,通过 VS Code 启动的任何后续交互式 shells 都是非登录 shells,因此只有来源
.bashrc
- 解决这个问题的一个复杂因素是 vscode-server 显然会在其生命周期内缓存环境,因此这些点文件的更改在服务器重新启动之前不会变得可见。
我有更好的解决方案来最小化代理范围
export http_proxy=<proxy here>
export no_proxy=<no proxy here>
while IFS= read -r _file; do
if ! grep -s -q "export http_proxy=" "${_file}"; then
sed -i -e "/^ROOT/i export http_proxy=${http_proxy}" -e "/^ROOT/i export https_proxy=${http_proxy}" -e "/^ROOT/i export no_proxy=${no_proxy}" "${_file}"
fi
done < <(find ~/.vscode-server/bin -type f -name "server.sh")
我有这样的情况,我需要使用安装在 Windows 10 上的 VS Code,并且 运行 它在 RHEL 7.x 上具有扩展名 Remote - SSH。
默认的 RHEL 7.x 运行s 和 git 1.8.x。我已经安装了更新的 git 版本,但这不在默认的 $PATH 环境中。
我找到了这个说明https://code.visualstudio.com/docs/remote/wsl#_advanced-environment-setup-script,它描述了在使用 WSL 时如何专门为 VS Code 设置环境变量。
If you want to run additional commands or modify the environment this can be done in a setup script ~/.vscode-server/server-env-setup
这似乎只有在您使用 WSL 时才有效。为什么这不适用于 Remote - SSH extension?
我的特殊情况是在使用 VS Code 时我只需要 git>=2。当我通过 ssh 定期连接时,我想要并需要 OS 默认工具和设置。
这给了我一个特殊的要求,我不想编辑 ~/.bashrc
、~/.cshrc
或任何其他用户环境文件。
我希望能够仅为 VS Code 编辑环境。某种,也许像:
#!/bin/bash
export PATH=/opt/rh/rh-git29/root/usr/bin\:$PATH
export LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64:$LD_LIBRARY_PATH
...
#!/bin/csh
setenv PATH /opt/rh/rh-git29/root/usr/bin\:$PATH
setenv LD_LIBRARY_PATH /opt/rh/httpd24/root/usr/lib64:$LD_LIBRARY_PATH
...
有什么我还没有找到可以提出工作请求的地方吗?或者这是对 VS Code 团队的某种请求吗?
此致。
我想我在this issue comment中找到了解决方案,后续回复:
- 当 vscode-server 最初启动时,它使用登录名 shell,在您的主目录中获取
.profile
。 - 但是,通过 VS Code 启动的任何后续交互式 shells 都是非登录 shells,因此只有来源
.bashrc
- 解决这个问题的一个复杂因素是 vscode-server 显然会在其生命周期内缓存环境,因此这些点文件的更改在服务器重新启动之前不会变得可见。
我有更好的解决方案来最小化代理范围
export http_proxy=<proxy here>
export no_proxy=<no proxy here>
while IFS= read -r _file; do
if ! grep -s -q "export http_proxy=" "${_file}"; then
sed -i -e "/^ROOT/i export http_proxy=${http_proxy}" -e "/^ROOT/i export https_proxy=${http_proxy}" -e "/^ROOT/i export no_proxy=${no_proxy}" "${_file}"
fi
done < <(find ~/.vscode-server/bin -type f -name "server.sh")