运行“导出”命令,在SSH
问题描述:
当我运行从我bash
壳以下:运行“导出”命令,在SSH
bash -c '(export abc=123 && echo $abc)'
输出为“123”。但是当我运行它时ssh
:
ssh remote-host "bash -c '(export abc=123 && echo $abc)'"
没有输出。为什么是这样?有没有解决的办法?也就是说,有没有办法为我在ssh
上运行的命令设置一个环境变量?
注意:当我用echo $USER
之类的标准替换echo $abc
时,ssh
命令会按预期打印出远程计算机上的用户名,因为它已被设置。
我在OpenSSH 4.3
答
也就是说ssh
之前使用
ssh remote-host "bash -c '(export abc=123 && echo $abc)'"
变量得到由当地外壳扩展(因为它与$USER
的情况)时,因为运行RHEL 5的Linux执行。通过使用\$
逃离$
,它应该做的罚款
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',但是这应该可以解决它。 – aaronstacy 2011-01-11 23:11:39