【问题标题】:Set environment variables using SSH使用 SSH 设置环境变量
【发布时间】:2010-05-24 14:15:18
【问题描述】:

我正在尝试使用来自 cygwin 的 SSH 执行 unix 命令。我的命令集将导航到某个目录,获取特定文件。根据来自该文件的变量,我会尝试启动应用程序。但不知何故,变量没有得到来源,因为 echo 没有返回任何值。有人可以让我知道我在这里缺少什么

环境变量文件(myenv)的内容是

export TEST_DATA="DATA1:DATA2"

我正在执行以下命令

$ ssh kunal@kspace "ls; cd /disk1/kunal/env; . ./myenv; echo $TEST_DATA; "

【问题讨论】:

    标签: unix shell ssh


    【解决方案1】:

    双引号不会抑制扩展。请改用单引号。

    也就是说,变量是在您这边展开的,而不是在您通过 SSH 连接到的服务器上。

    【讨论】:

    • 有什么地方可以同时使用吗?我的意思是,我在本地机器中有一些变量,我想将它们传递给 ssh 以进行本地扩展。另外根据变量文件,我想回显我不希望本地扩展的变量!
    • 当然。只需切换它们。 ssh ... 'echo $remote'"$local"
    【解决方案2】:

    因为$TEST_DATA 用双引号括起来,所以它的值被你的本地shell(你在其中调用ssh 的那个)插值。如果您使用单引号,它会将文字 $TEST_DATA 作为 ssh 命令的一部分传递给在远端执行。

    【讨论】:

    • +1!它适用于单引号。但是,我正在寻找一种可以同时使用这两种变量的方法。一个应该在本地扩展,另一个应该远程扩展。