我正在尝试使用 SSH 远程运行命令,但我的问题是,当我这样做时,我的 .basrhc 没有被执行,所以 PATH 全错了,我的脚本被破坏了。
我正在做的是
ssh www.remotehost.com 'my_command'
我也试过这样的事情
ssh www.remotehost.com 'source ~/.bashrc; my_command' 和类似的变体,但似乎没有任何效果。
Zan*_*hey 12
带有单个简单命令参数的 SSH 不会启动 shell,这意味着 .bashrc 不会被执行。
带有复合命令参数(例如您的第二个示例)的 SSH 应该启动一个 shell,但它将是一个非交互式的,因此默认情况下不会运行 .bashrc。有关更多信息,请参阅Bash手册中的Bash 启动文件。
但是,在您的第二个示例命令中调用 'source' 应该可以。您的 .bashrc 是否有类似if [ "$PS1" ]; then
或if [ -z "$PS1" ]; then
顶部的行?示例 bashrc 确实有这些行之一,它会阻止脚本命令运行,除非您在交互式 shell 上。如上所述,默认情况下,当您传递命令参数时,SSH 不会启动交互式 shell。尝试ssh -t www.remotehost.com 'source ~/.bashrc; my_command'
,因为这将强制 TTY 分配并像交互式 shell 一样工作。
归档时间: |
|
查看次数: |
2491 次 |
最近记录: |