如何使非交互式 ssh 环境与交互式 ssh 环境相同

如何使非交互式 ssh 环境与交互式 ssh 环境相同

当我使用 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

相关内容