`.zshrc`를 디버깅하려면 `set -x`를 사용하세요.

`.zshrc`를 디버깅하려면 `set -x`를 사용하세요.

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.

답변1

디버깅을 시도하는 경우스크립트set -x, 터미널에서 사용 하지 마세요 (즉, 터미널에서 실행되는 셸 디버깅). 해석기 옵션을 사용하여 스크립트를 시작할 수 -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!

답변2

set -x쉘에서 실행하면 "모든 것"이 디버그 모드로 전환됩니다. 그러나 쉘 함수와 그 함수가 호출하는 모든 것을 디버깅하려는 경우 typeset -ft some_func이 함수를 사용하여 디버깅할 함수를 표시할 수 있습니다. 예를 들어:

$ which some_func
some_func() {
   echo "hiii"
   ls -ls
   some_other_func 
}
$ typeset -ft some_func
$ some_func
....
<debug output here>
...

이는 디버그 출력의 범위를 관심 있는 코드로 제한합니다. typeset -f +t some_func디버깅을 끄려면 실행하세요 . 환경과 관계없이 별도의 스크립트를 디버그하려면 zsh -x script.sh누군가 언급한 것처럼 실행하세요.

답변3

여기 있어요. 나는 다음 줄을 내 안에 넣었다..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✔% 

관련 정보