Shell-Script
set -x
調試我的 .zshrc
當我
set -x
用來調試命令時,它會輸出一些額外的行。% set -x +precmd_update_git_vars:1> [ -n '' ']' +precmd_update_git_vars:1> [ '!' -n '' ']' +precmd_update_git_vars:2> update_current_git_vars +update_current_git_vars:1> unset __CURRENT_GIT_STATUS +update_current_git_vars:3> [[ python == python ]] +update_current_git_vars:4> _GIT_STATUS=+update_current_git_vars:4> python /home/ismail/zshfiles/gitstatus.py +update_current_git_vars:4> _GIT_STATUS='' +update_current_git_vars:6> __CURRENT_GIT_STATUS=( '' ) +update_current_git_vars:7> GIT_BRANCH='' +update_current_git_vars:8> GIT_AHEAD='' +update_current_git_vars:9> GIT_BEHIND='' +update_current_git_vars:10> GIT_STAGED='' +update_current_git_vars:11> GIT_CONFLICTS='' +update_current_git_vars:12> GIT_CHANGED='' +update_current_git_vars:13> GIT_UNTRACKED='' +precmd_update_git_vars:3> unset __EXECUTED_GIT_COMMAND
由於這些輸出,我無法調試我的命令。
為什麼要
set -x
調試我的.zshrc
?我只想set -x
調試set -x
.
如果您正在嘗試調試腳本,請不要
set -x
在終端上使用(即調試在終端中執行的 shell)。-x
您可以改為使用解釋器的選項(例如,zsh -x <scriptname> [<args>]
)來啟動腳本。例如,如果您有一個名為 的 zsh 腳本
ex.zsh
,那麼您可以執行以下操作:$ cat /tmp/ex.zsh #!/bin/zsh function () { echo "Hello, world!" } $ zsh -x /tmp/ex.zsh +/tmp/ex.zsh:3> '(anon)' +(anon):1> echo 'Hello, world!' Hello, world!
在這裡。我把以下幾行放在我的
.zshrc
alias debugOn='DEBUGCLI=YES exec zsh' alias debugOff='DEBUGCLI=NO exec zsh' if [[ $DEBUGCLI == "YES" ]] then export PS1="%F{013}%2~%f%(?.%F{004}.%F{001}✕%?)%# %f" else . ~/zshfiles/zsh-git-prompt.zsh export PS1="%F{013}%2~%f$(git_super_status)%(?.%F{004}.%F{001}✕%?)%# %f" fi
現在它的工作原理如下:
Documents/check:master✔% debugOn Documents/check% set -xv Documents/check% echo "Debugging Line" echo "Debugging Line" +zsh:3> echo 'Debugging Line' Debugging Line Documents/check% set +xv set +xv +zsh:4> set +xv Documents/check% debugOff Documents/check:master✔%