Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash是否应该始终提供bash_源定义,如果不是,最好的解决方法是什么?_Bash_Homebrew_Zsh - Fatal编程技术网

bash是否应该始终提供bash_源定义,如果不是,最好的解决方法是什么?

bash是否应该始终提供bash_源定义,如果不是,最好的解决方法是什么?,bash,homebrew,zsh,Bash,Homebrew,Zsh,我最近发现一些引用BASH_源代码的脚本失败了,因为它在我的zshell中没有定义。注意:我的bash来自自制,因此自制的bash可能会更改默认的bash_源 问题:在运行/bin/bash之后,我发现它在我启动的bash shell中也没有定义 关于这件事,我有两个问题: 问题1:$BASH\u SOURCE是否总是定义为在任何BASH shell中都受支持?如果是这样,我假设运行/bin/bash而没有看到bash\u源代码意味着bash本身有一个bug 问题2:我是否应该为BASH_

我最近发现一些引用BASH_源代码的脚本失败了,因为它在我的zshell中没有定义。注意:我的bash来自自制,因此自制的bash可能会更改默认的bash_源

  • 问题:在运行/bin/bash之后,我发现它在我启动的bash shell中也没有定义
关于这件事,我有两个问题:

  • 问题1:
    $BASH\u SOURCE
    是否总是定义为在任何BASH shell中都受支持?如果是这样,我假设运行
    /bin/bash
    而没有看到bash\u源代码意味着bash本身有一个bug

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


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

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

运行脚本时,第一行
#/bin/bash
为当前脚本指定解释器。如果您使用bash,您应该在那里提供bath-to-bash安装


或者切换到bash并在那里运行脚本。或者通过将脚本作为参数从zsh传递给/bin/bash来运行它。无论你喜欢哪个,请注意这是一个数组,所以要查看它的内容,你应该检查
printf“%s\n”${BASH_SOURCE[@]}
。你为什么要用
zsh
运行
BASH
脚本?听起来像是在暗示,${BASH_SOURCE}确实应该一直有效。