小议SSH远程登录Linux终端与VS2022远程编译
参考
博客
文档
login模式下使用bash,会依次读取~/.bash_profile
, ~/.bash_login
,和~/.profile
,读到哪个就跳过后面所有的。
non-login模式下使用bash,会读取~.bashrc
。
一、SSH远程访问模式
1. 通过SSH登录远程终端
属于interactive + login shell模式,会加载.bash_profile
文件中的配置。
2. 通过SSH直接执行远程命令和脚本
形如:
ssh -t xxx@123.123.123.123 "命令字符串"
属于interactive + non-login shell模式,会加载.bashrc
文件中的配置。
3. SSH登录远程终端后,在远程终端执行bash xxx.sh
属于non-interactive + non-login shell模式。这种模式会去寻找环境变量BASH_ENV
,将变量的值作为文件名进行查找,如果找到便加载它。
二、VS2019/VS2022的远程linux系统编译
实践证明,VS2022的远程linux系统编译会加载.bashrc
文件,故猜测是通过上一节的第二种方式进行远程编译的。因此,有任何需要在编译前配置完成的环境变量,都应该在.bashrc
中添加:
source /etc/profile.d/modules.sh
module unload scl;module load scl/gcc7.3
可以保证VS启动远程编译之前执行这两句命令。