繁体   English   中英

当 $0 不工作时,如何使 ${BASH_SOURCE[0]} 在.zsh 中工作?

[英]How to make ${BASH_SOURCE[0]} work in .zsh when $0 does is not working?

我正在尝试使这个脚本工作,该脚本最初是由我的一位同事为 bash 外壳编写的。 计划是在 zsh shell 中获取它。 据我了解,此脚本允许跨终端访问此目录中保存的帮助程序脚本。 但是,当我只执行这一位时,我不断收到错误消息。

我尝试了以下一些已回答问题的解决方案,例如用${(%):-%N${(%):-%x} From here替换${BASH_SOURCE[0]}

PATHNAME="$_";

if [[ "$PATHNAME" != "$0" ]]; then
    export EXAMPLE_DIR=$(dirname $(dirname $(realpath ${BASH_SOURCE[0]})));
else
    >&2 echo "This script should be sourced, not executed in a subshell";
fi

我不明白为什么我不断收到错误,我真的很想了解它有什么问题。 非常感谢任何帮助或阅读链接!

zsh对你来说更简单。

如果我们考虑这个例子,我们有文件 /tmp/test-z,它包含:

#!/bin/zsh
echo '_ => ' $_
echo '0 => ' $0

$0的值始终是文件,如果调用或源文件

/tmp/test-zsource /tmp/test-z. /tmp/test-z . /tmp/test-zzsh /tmp/test-z

$_的值设置为与源相同的$0 ,因此在您的情况下,您可以在 ZSH 中替换 ${ BASH_SOURCE ${BASH_SOURCE[0]}) $0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM