2010-05-24 205 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