![](/img/trans.png)
[英]DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" How does that work?
[英]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-z
或source /tmp/test-z
或. /tmp/test-z
. /tmp/test-z
或zsh /tmp/test-z
$_
的值设置为与源相同的$0
,因此在您的情况下,您可以在 ZSH 中替换 ${ BASH_SOURCE ${BASH_SOURCE[0]})
$0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.