Zsh继承xtrace选项
与此问题类似:,但适用于Zsh 如何使所有Zsh子shell继承xtrace选项 例如,如果Zsh继承xtrace选项,zsh,Zsh,与此问题类似:,但适用于Zsh 如何使所有Zsh子shell继承xtrace选项 例如,如果script1.sh正在调用/script2.sh并且我运行zsh-x script1.sh,我希望script2.sh也启用xtrace模式 对于Bash,答案是导出SHELLOPTS变量 Zsh有解决方案吗 您可以利用Zsh中的启动/关闭文件(请参见man zshall):Zsh将始终在启动时读取(并执行)文件$ZDOTDIR/.zshenv(如果ZDOTDIR未设置,则使用HOME)。因此,您可以将
script1.sh
正在调用/script2.sh
并且我运行zsh-x script1.sh
,我希望script2.sh
也启用xtrace模式
对于Bash,答案是导出SHELLOPTS
变量
Zsh有解决方案吗 您可以利用Zsh中的启动/关闭文件(请参见
man zshall
):Zsh将始终在启动时读取(并执行)文件$ZDOTDIR/.zshenv
(如果ZDOTDIR
未设置,则使用HOME
)。因此,您可以将set-x
放入$ZDOTDIR/.zshenv
中,每个Zsh脚本都将在启用xtrace模式的情况下运行
这是我在脚本中使用它的方式:
env_dir="$(mktemp -d)"
echo "set -x" > "${env_dir}/.zshenv"
export ZDOTDIR="${env_dir}"
zsh "$@"
unset ZDOTDIR
rm -rf "${env_dir}"
事实上,这个解决方案也可以用于Bash,使用Bash_ENV
变量,该变量指向一个文件,类似地,该文件将在Bash启动时执行