代码之家  ›  专栏  ›  技术社区  ›  DeepDeadpool

为什么source看不到这个conf文件?

  •  0
  • DeepDeadpool  · 技术社区  · 6 年前

    我在一个目录中有两个文件: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 回复  |  直到 6 年前
        1
  •  3
  •   iBug    6 年前

    的POSIX规范 . shell builtin是从 $PATH ,类似于搜索可执行文件的方式。它是一个bash扩展,如果在 $路径 .

    所以 . ./conf.conf 是一种符合POSIX的方式来实现这一点,您可以使用bash和 sh . 然而 . conf.conf bash是特定的吗( 只搜索 $路径 )所以你只能用bash得到结果。