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

当我跑的时候bash,我掉进了一个shell:

然后当我跑步时,ql_get_latest我得到:

bash: environment: No such file or directory

有人知道那是什么吗?

4

1 回答 1

1

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

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

在您的情况下,您正在尝试获取名为 的文件environment,该文件不存在。(如果确实如此,它不一定与ql_get_latest任何方式相关。)

于 2019-06-04T18:04:16.483 回答