源文件时奇怪的bash消息

时间:2019-06-04 17:57:27

标签: bash macos bsd bash4

ql_get_latest(){
  . "$BASH_SOURCE";
}
export -f ql_get_latest;

当我运行bash时,我会进入外壳:

然后运行ql_get_latest时得到:

bash: environment: No such file or directory

有人知道这是怎么回事吗?

1 个答案:

答案 0 :(得分:2)

BASH_SOURCE(或具体地说,该数组的索引0处的元素)是函数定义所在的文件的名称。由于您的外壳程序从其父级继承ql_get_latest,因此“源文件”的名称设置为environment。如果您只是从函数中回显变量的值,则可以看到此情况(以及另一种特殊情况)。

$ foo () { echo "$BASH_SOURCE"; }
$ foo
main
$ export -f foo
$ bash
$ foo
environment

在您的情况下,您试图获取名为environment的文件,该文件不存在。 (如果确实如此,则它不一定与ql_get_latest有任何关系。)