bzd*_*boo 12 bash ssh remote environment-variables
当我以交互方式运行我的程序时,它工作正常:
ssh somehost
$ ~/some/path/somescript.py
Run Code Online (Sandbox Code Playgroud)
当我直接通过 ssh 运行我的程序时,它不起作用。变量PYTHONPATH
未设置,因为.bashrc
不是来源。
ssh somehost ~/some/path/somescript.py
Run Code Online (Sandbox Code Playgroud)
如果我运行ssh somehost 'source ~/.bashrc; ~/some/path/somescript.py'
,它工作正常。
但后者不适用于其他一些人,例如使用 tcsh 而根本没有~/.bashrc
)。
在另一台适用于所有 shell 的主机上通过 ssh 运行一个东西的命令是什么?
Gil*_*il' 12
没有为非交互式登录运行的标准每用户文件。您需要使程序自包含,以便它能够在不依赖非默认环境变量的情况下找到其依赖项,或者显式设置环境,通常使用
ssh somehost '. ~/.profile; exec ~/some/path/somescript.py'
Run Code Online (Sandbox Code Playgroud)
您不应该在 中设置环境变量.bashrc
:此文件用于交互式 shell,并在 bash 的每个实例中读取。环境变量应该设置在.profile
,登录时读取。 除了极少数人不使用 Bourne 风格的 shell 作为他们的登录 shell 之外,.profile
确实适用于每个人,无论他们使用 bash 还是 zsh 或csh 或fish 交互。另请参阅
.bashrc 和 .bash_profile 之间的区别,
应该使用哪些设置文件来设置 bash 环境变量?.
话虽如此,每次您使用特定密钥通过 ssh 登录时,都有一种方法可以获取脚本。请参阅当通过 SSH 连接到主机时,有没有办法推送 shell 配置信息?, sh 通过 ssh 启动文件。
归档时间: |
|
查看次数: |
17309 次 |
最近记录: |