2012-11-21 80 views
0

我是shell腳本的新手。我有一個shell腳本來源另一個文件。另一個文件只是名稱值對的文件。我在這裏有一個困惑。shell腳本源行爲

test.dat 
TEST_VARIABLE_PATH=/usr/project/workspace 

腳本文件(test_script.sh)

TEST_VARIABLE_PATH= 
source test.dat 
echo ${TEST_VARIABLE_PATH} 

以上echo語句打印不同的值這讓我感到困惑。 在第1行,如果我做

TEST_VARIABLE_PATH=/somepath/ 

,連我都來源於TEST.DAT具有TEST_VARIABLE_PATH變量已經設置,回聲僅打印

TEST_VARIABLE_PATH=/somepath/ 

那裏採購文件沒有覆蓋變量。

假設如果非要爲

TEST_VARIABLE_PATH=\`dirname $0\`/../ 

,源命令會覆蓋和回聲打印

TEST_VARIABLE_PATH=/usr/project/workspace 

行1這是爲什麼呢源表現不同?請幫我理解。

回答

2

看起來好像你沒有真的source該文件。

要正確地做到這一點,把完整路徑的文件,如:

source '/full/path/to/file' 
+1

或者只是'。 /路徑/到/ file'。請注意它是'dot [space]/path/to/file' – Jite