使用 SSH 远程运行程序,但它不会使用我的 .bashrc 并且 PATH 错误

3 ssh path

我正在尝试使用 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" ]; thenif [ -z "$PS1" ]; then顶部的行?示例 bashrc 确实有这些行之一,它会阻止脚本命令运行,除非您在交互式 shell 上。如上所述,默认情况下,当您传递命令参数时,SSH 不会启动交互式 shell。尝试ssh -t www.remotehost.com 'source ~/.bashrc; my_command',因为这将强制 TTY 分配并像交互式 shell 一样工作。