Bash 运行';出口';SSH上的命令
当我从我的Bash 运行';出口';SSH上的命令,bash,ssh,Bash,Ssh,当我从我的bashshell运行以下命令时: bash -c '(export abc=123 && echo $abc)' 输出为“123”。但是当我在ssh上运行它时: ssh remote-host "bash -c '(export abc=123 && echo $abc)'" 没有输出。为什么会这样?有办法解决这个问题吗?也就是说,有没有办法为我在ssh上运行的命令设置环境变量 注意:当我将echo$abc替换为类似echo$USER的标准内容时,
bash
shell运行以下命令时:
bash -c '(export abc=123 && echo $abc)'
输出为“123”。但是当我在ssh
上运行它时:
ssh remote-host "bash -c '(export abc=123 && echo $abc)'"
没有输出。为什么会这样?有办法解决这个问题吗?也就是说,有没有办法为我在ssh
上运行的命令设置环境变量
注意:当我将echo$abc
替换为类似echo$USER
的标准内容时,ssh
命令会按预期在远程机器上打印用户名,因为它已经设置好了
我使用OpenSSH 4.3运行RHEL 5 Linux,这是因为
ssh remote-host "bash -c '(export abc=123 && echo $abc)'"
在执行ssh
之前,该变量由本地shell展开(与$USER
的情况相同)。使用\$
对$
进行转义,应该可以
ssh remote-host "bash -c '(export abc=123 && echo \$abc)'"
旁注:
- 您不需要仅为此导出
- 你不需要用()
ssh remote-host "bash -c 'abc=123 && echo \$abc'"
见鬼,您甚至可以省略bash-c…
内容,正如ssh手册页所述:
如果指定了命令,则在远程主机上执行该命令,而不是在登录shell上执行
但这些可能是特定于您的任务;) 太好了,谢谢!我要做的事情还有很多,所以我必须使用“bash-c”和“export”,但这肯定能解决问题。是的,有道理:)。祝你好运