2012-01-19 70 views
6

我嘗試以下兩種方式來源屬性文件不能源shell腳本屬性文件

#!/bin/sh 
. import.properties 
echo $USER_ID 
echo $INPUT_FILE 

它說:

./test.sh[3]: import.properties: not found 

在使用source import.properties嘗試它給了消息:

./test.sh[3]: source: not found. 

我對腳本和環境很陌生。請讓我知道我在這裏失蹤了什麼?

回答

12

要通過點.命令找到該文件必須是可讀的(不一定是可執行的),並且在您的PATH(並且安全可用,它必須包含shell腳本)。

如果該文件是在當前目錄和.(的目錄,而不是命令)不在PATH中,你可以使用:

. ./import.properties 

否則,你需要指定在絕對名稱文件或文件的相對名稱,或將文件移動到PATH上方便的目錄。

備選符號source import.properties失敗,因爲您不在C Shell中,並且因爲您沒有使用Bash。 C Shell中的source命令是Bourne shell中的dot命令的類比。 Bash允許它作爲點命令的同義詞(或點命令作爲源的同義詞)。由於沒有找到source,我們可以放心地認爲你的shell不支持它作爲內置。

+0

如果你想從另一個目錄運行這個腳本,你應該使用'。 「$(dirname - 」$ 0「)/ import.properties」'。 – l0b0 2012-01-19 14:33:25

+0

這可能會或可能不會工作;經典地說,Bourne和Korn shell不會將目錄的名稱預先添加到命令名中,但是'bash'確實可以做到這一點。 – 2012-01-19 15:35:02