gpt4 book ai didi

shell - ${BASH_SOURCE[0]} 在 zsh 中等效吗?

转载 作者:行者123 更新时间:2023-12-03 05:56:12 26 4
gpt4 key购买 nike

标题应该说明一切。我正在寻找相当于 ${BASH_SOURCE[0]} 的内容在 zsh 中。

注意:我一直在互联网上发现“$0 相当于 ${BASH_SOURCE[0]} ”,但这似乎是错误的: $0似乎是执行命令的名称。 (它是 argv[0] ,这是有道理的。)在我的脚本( .zshrc )中回显 $0 给出 zsh对于 $0 ,这与 ${BASH_SOURCE[0]} 不同。是。事实上,${BASH_SOURCE[0]}似乎适用于 zsh ,除了内部 .zshrc文件。

我在 .zshrc 中真正在做什么(这不起作用):

echo ${BASH_SOURCE[0]}
source `dirname $0`/common-shell-rc.sh

源失败( $0zsh )并且 echo输出一个空行。

编辑: 显然,对于 $0为了工作,我需要选项 FUNCTION_ARGZERO选项集。有什么方法可以测试这是否在脚本中设置? (这样我就可以暂时设置它) 它显然是打开的,除非你设置 nofunction_argzero ,并且它在我的 shell 中。仍然一无所获$0 。 (我认为 b/c 我不在函数中。)

最佳答案

${BASH_SOURCE[0]} 在 zsh 中等效于 ${(%):-%N},而不是 $0(如OP说,后者在.zshrc中失败)

这里%表示对值进行提示扩展,%N 表示“脚本的名称、源文件、或 zsh 当前正在执行的 shell 函数,

以最近启动的为准。如果没有,则相当于参数 $0。”(来自 man zshmisc)

关于shell - ${BASH_SOURCE[0]} 在 zsh 中等效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9901210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com