2010-05-24 123 views
1

我想从cygwin使用SSH执行unix命令。我的一套命令将导航到某个目录,并生成一个特定的文件。基于来自该文件的变量,我会尝试启动应用程序。但不知何故变量不会被获取,因为echo不会返回任何值。可能有人让我知道我错过这里的环境变量文件的使用SSH设置环境变量

内容(myenv)是

export TEST_DATA="DATA1:DATA2" 

,我执行以下命令

$ ssh [email protected] "ls; cd /disk1/kunal/env; . ./myenv; echo $TEST_DATA; " 

回答

3

双引号不抑制扩张。改用单引号。

也就是说,该变量正在扩展,而不是您正在接入的服务器上。

+0

哇!谢谢。 +1 – Kunal 2010-05-24 06:16:53

+0

有无论如何我可以同时使用? 我的意思是,我在本地机器上有一些变量,我想通过ssh进行本地扩展。也取决于变量文件,我想回应我不希望本地扩展的变量! – Kunal 2010-05-24 06:24:04

+1

当然。只需切换它们。 'ssh ...'echo $ remote'“$ local”' – 2010-05-24 06:35:05

1

由于$TEST_DATA用双引号引起来,它的值正在被本地shell(您称为ssh的那个)插入。如果您使用单引号,它将传递字面$TEST_DATA作为ssh命令的一部分,以便在远端执行。

+0

+1!它适用于单引号。不过,我正在寻找一种可以使用这两种变量的方法。应该在本地进行扩展的应该进行远程扩展。 – Kunal 2010-05-24 06:25:29