为何来源看不到该conf文件?

时间:2019-01-16 06:04:57

标签: bash

我的目录中有2个文件; sh.sh和conf.conf。他们看起来像这样。

# conf.conf
HELLO=hello

# sh.sh
. conf.conf
echo $HELLO

在终端窗口中,我可以使用以下命令获取conf.conf

. conf.conf

,命令成功执行,我可以echo $HELLO到屏幕了。但是,当我运行脚本时,相同的命令不起作用。我收到以下错误

sh.sh: 1: .: conf.conf: not found

如果我将脚本的解释器更改为bash,则可以正常工作。如果我将脚本中的命令更改为. ./conf.conf,它也可以使用。为什么会这样?

1 个答案:

答案 0 :(得分:3)

内置. shell的POSIX规范是从$PATH中的路径搜索文件,类似于搜索可执行文件的方式。这是一个Bash扩展名,如果在$PATH中找不到该文件,它也会在当前目录中搜索该文件。

因此. ./conf.conf是POSIX兼容的方法,您可以同时观察Bash和sh的行为。但是. conf.conf是特定于Bash的(sh仅搜索$PATH),因此只能通过Bash获得结果。