以下命令起作用
% DEBUGCLI=YES exec zsh
% set -xv
% echo debug
echo debug
+zsh:2> echo debug
debug然而,当我尝试这样的事情时
% exec zsh -c 'set -xv'它只会关闭终端。
我不想使用exec zsh -xv。原因是这里。
我正在寻找一个命令,而不是两个命令,这样我就不必在exec zsh之后单独运行D5了。
是的,我试过了
exec zsh ; set -xv & exec zsh && set -xv.这两个命令都忽略了set -xv。
发布于 2020-07-06 05:44:32
zsh -c 'set -xv'告诉zsh运行包含set -xv的内联脚本。运行set -xv后,脚本完成,zsh退出(使用set的退出代码)。就像zsh -c uname运行uname并完成一样。
exec zsh ; set -xv告诉当前shell在当前进程中执行zsh,所以以后放置的任何命令都不会被执行(在任何情况下,只能在exec返回之后执行),因为shell将不再存在以执行它们。
如果您想运行一个带有-v和-x选项的D12交互式shell,那应该是:
zsh -xv或
zsh -o verbose -o xtrace如果您想像set -xv建议的那样在您的环境中与DEBUGCLI=YES交互运行时运行zsh,那么只需添加:
if [[ $DEBUGCLI = YES ]]; then
set -o xtrace -o verbose
fi到您的~/.zshrc,(如果您不希望跟踪和记录您的~/.zshrc的其余部分,请在最后一行)。
在任何情况下,您都可以运行set -xv和set +xv (或set -o xtrace -o verbose和set +o xtrace +o verbose)来打开或关闭调试,而不必每次重新启动shell。
如果您希望xtrace只在执行您输入的代码时生效(而不是执行钩子或zle小部件中的命令),则可以在preexec()钩子的末尾设置它,并在precmd()钩子的开头(使用set +x 2> /dev/null)取消它。
https://unix.stackexchange.com/questions/596937
复制相似问题