【发布时间】:2017-07-21 05:49:49
【问题描述】:
myconf.sh
setting1=val1
setting2=val2
export setting1
export setting2
然后我在我的 runner.sh 中调用这个 conf 文件,但我收到错误“runner.sh: source: not found”。最初我在内部调用 source myconf.sh 时使用它,并在一些帖子中看到我应该使用“。”而不是“来源”。
myrunner.sh
#!/bin/sh
. myconf.sh
echo "$setting1"
echo "$setting2"
我正在通过这个命令调用 myrunner.sh
sh myrunner.sh
如果我真的做错了什么,请告诉我。我可以在我的 CentOS 映像中正确调用它而不会出错,但是当我们在 UNIX 机器中执行它时,我遇到了错误。
谢谢!
【问题讨论】:
-
这在什么平台上不起作用?这是什么特定的 UNIX?
-
您是说即使您将
source替换为.之后,它仍会使用source: not found失败? -
使用
.没有错。使用source很有用,因为人类读者通常会发现它比.更具可读性,但它们完全相同。但是,这是有问题的,因为并非所有的 shell 都能识别它。 -
source与sh错误。 POSIX 标准只保证. myconf.sh,而不是source myconf.sh,工作,如果你使用sh(而不是bash,ksh等)来运行你的脚本,唯一保证的功能是目前是在 POSIX sh 标准中。 -
@user3694537 我在这里部分猜测,但您的意思是“不,它不再显示
source: not found。当我用.替换它时,消息变为.: myconf.sh: not found” ?如果是这样,您确实需要更新您的帖子以反映这一点。