2014-06-21 54 views
0

我有shell腳本調用test.sh,它包含Unix的環境變量不設置遠程執行

echo 'welcome' 
echo $inf_user 

,當我在UNIX箱輸出運行此腳本

歡迎

myusername

但是,當我使用運行此腳本砰砰我的輸出是

歡迎

正如你可以看到它只能顯示歡迎,它並沒有顯示名爲myUsername了更多

請幫

我的plink命令是 - plink.exe -ssh [email protected] -l user -pw password -m c:/myfile/file.txt hostname

和 file.txt的包含

#!/bin/sh 
/folder1/folder2/test.sh 
+0

'$ inf_user'在哪裏設置?這不是一個典型的環境變量。如果你正在尋找你的名字,試試腳本中的'$ USER'(全部大寫)。 – lornix

回答

1

的問題是,當你真正登錄到你的服務器,你還加載環境變量,如$inf_user。但是,當plink.exe連接,我猜測它沒有啓動一個真正的SSH會話,將加載用戶配置文件&相關的環境變量。

如何解決這個取決於安裝&安裝要求。不熟悉如何設置$inf_user,但也許你可以這樣做;我以本地Mac OS X安裝程序爲例。首先登錄TI遠程Unix/Linux服務器並輸入以下內容:

echo $PATH; 

,它的輸出應該是這樣的:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 

現在在你的腳本在遠程主機上添加這一行基於對輸出到文件的頂部:

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 

這將迫使腳本使用PATH作爲$PATH

此外,由於$inf_user不是標準的Unix/Linux變量,因此它可能是在遠程系統上的.bashrc.profile中設置的。所以你可能想在那裏查看有沒有可以複製的變量。

和以往所有這一切,我不是如何plink.exe作品100%肯定,但file.txt可能會爲bash這樣會更好集:

#!/bin/bash 
/folder1/folder2/test.sh 

我有一種奇怪的感覺,當你登錄你正在使用bash外殼程序,但此腳本使用的是基本的外殼代碼sh,這也可能導致此問題。

1

在大多數UNIX系統上,變量$USER可用於訪問當前登錄用戶的用戶名。變量$inf_user特定於您碰巧擁有的任何設置。

另外,在一個不相關的說明中,我看到您在命令中指定了密碼。通常不應該這樣做,因爲命令在命令歷史記錄中未加密記錄,並且可以在機器上運行ps的任何人看到。我建議你運行一個不含密碼的命令,但可以通過標準輸入來輸入密碼。