bash是否应始终提供BASH_SOURCE定义,如果不是,那么最佳解决方法是什么?

时间:2016-09-02 13:06:01

标签: bash homebrew zsh

我最近发现一些引用BASH_SOURCE的脚本失败了,因为它在我的zshell中是未定义的。注意:我的bash来自自制软件,所以homebrew的bash可能会更改默认的BASH_SOURCE。

  • 问题:在运行/ bin / bash之后,我发现它在我启动的bash shell中也是未定义的。

关于此事,我有两个问题:

  • 问题1:$BASH_SOURCE是否始终在任何bash shell中都被定义为支持?如果是这样,我假设运行/bin/bash并且没有看到BASH_SOURCE意味着bash本身存在错误?

  • 问题2:我是否应该为BASH_SOURCE全局导出一个合理的默认值,哪个不会破坏任何东西?

1 个答案:

答案 0 :(得分:1)

BASH_SOURCE是包含源文件名的数组,其中定义了FUNCNAME中相应的shell函数名。 FUNCNAME包含当前执行调用堆栈中所有shell函数的名称。这意味着BASH_SOURCE特定于当前会话。

通常,您指的是BASH特有的变量,其他shell具有不同的调用堆栈处理实现,因此无法正确处理

运行脚本时,第一行#!/bin/bash指定当前脚本的解释器。如果你使用bash,你应该为那里的BASH安装提供浴缸

或者切换到bash并在那里运行脚本。或者通过将脚本作为参数从zsh传递给/ bin / bash来运行它。无论你喜欢什么