![如何使非交互式 ssh 环境与交互式 ssh 环境相同](https://linux22.com/image/1465322/%E5%A6%82%E4%BD%95%E4%BD%BF%E9%9D%9E%E4%BA%A4%E4%BA%92%E5%BC%8F%20ssh%20%E7%8E%AF%E5%A2%83%E4%B8%8E%E4%BA%A4%E4%BA%92%E5%BC%8F%20ssh%20%E7%8E%AF%E5%A2%83%E7%9B%B8%E5%90%8C.png)
当我使用 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