【问题标题】:Strange bash message when source-ing file源文件时出现奇怪的 bash 消息
【发布时间】:2019-06-04 17:57:27
【问题描述】:
ql_get_latest(){
  . "$BASH_SOURCE";
}
export -f ql_get_latest;

当我运行bash 时,我进入了一个shell:

然后当我运行ql_get_latest 时,我得到:

bash: environment: No such file or directory

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

【问题讨论】:

    标签: bash macos bsd bash4


    【解决方案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 有任何关系。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多