2012-01-19 68 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