当我使用 ssh 字符串参数(非交互式 ssh)执行命令而不是在服务器(交互式 ssh)中手动运行它们时,我的环境配置是否不同?
例如:当我运行 时ssh <user@servername> "echo \$SGE_ROOT"
,我得到空字符串。当我连接到我的服务器ssh <user@servername>
并运行命令时,echo $SGE_ROOT
我得到/opt/gridengine
。
我猜是某种配置文件脚本没有执行。是否可以找出哪个脚本并通过非交互式 ssh 运行它以使环境配置相同?
服务器使用CentOS 6.6。
答案1
似乎使用非交互式 ssh 时不会执行任何配置文件或 bash 脚本。所以我不得不明确调用它们:
ssh <user@servername> "source /etc/profile; echo \$SGE_ROOT"
我还必须在~/.bashrc
文件中评论这一行:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return