내 홈 디렉토리에 a 및 a가 있습니다 .zshrc
. .zshenv
내 명령에 새 명령을 추가했는데 .zshenv
해당 명령이 3번 이상 실행되는 것을 발견했습니다. 실수 source
로 삭제했다는 사실을 깨닫고 .zshrc
해당 줄을 삭제했지만 여전히 두 번 실행되었습니다.
나는 스크립트에 합계를 반영하려고 시도했고 $0
첫 번째 패스와 두 번째 패스를 얻었습니다. 그게 무슨 뜻이야? 호출자를 보여주는 "스택 추적"을 얻는 더 좋은 방법이 있습니까?$_
(~/.zshenv) (~/.zshenv)
(30) (zsh)
답변1
전화할 때 zsh
스위치를 사용하여 현재 상황을 디버깅할 수 있습니다 -x
. 결과와 함께 실행된 각 행을 표시한다는 점에서 스위치 bash
와 유사합니다 .-x
$ zsh -x
...
+/etc/profile.d/mc.sh:3> alias 'mc=. /usr/libexec/mc/mc-wrapper.sh'
+_src_etc_profile_d:9> i=/etc/profile.d/PackageKit.sh
+_src_etc_profile_d:10> [ -r /etc/profile.d/PackageKit.sh ']'
+_src_etc_profile_d:11> . /etc/profile.d/PackageKit.sh
+_src_etc_profile_d:9> i=/etc/profile.d/qt.sh
+_src_etc_profile_d:10> [ -r /etc/profile.d/qt.sh ']'
+_src_etc_profile_d:11> . /etc/profile.d/qt.sh
+/etc/profile.d/qt.sh:9> [ -z /usr/lib64/qt-3.3 ']'
+_src_etc_profile_d:9> i=/etc/profile.d/udisks-bash-completion.sh
+_src_etc_profile_d:10> [ -r /etc/profile.d/udisks-bash-completion.sh ']'
+_src_etc_profile_d:11> . /etc/profile.d/udisks-bash-completion.sh
+/etc/profile.d/udisks-bash-completion.sh:3> [ -z '' ']'
+/etc/profile.d/udisks-bash-completion.sh:3> return
+_src_etc_profile_d:9> i=/etc/profile.d/vim.sh
+_src_etc_profile_d:10> [ -r /etc/profile.d/vim.sh ']'
+_src_etc_profile_d:11> . /etc/profile.d/vim.sh
+/etc/profile.d/vim.sh:1> [ -n '' -o -n '' -o -n 4.3.10 ']'
...
나중에 볼 수 있도록 출력을 파일로 리디렉션할 수도 있습니다.
$ zsh -x 2>&1 | tee zsh.log
마지막에 중단될 것 같습니다. Ctrl+를 c중지하고 결과 로그 파일을 살펴보세요 zsh.log
.
답변2
변경 사항을 적용하셨나요 source ~/.zshrc
? 또는 변경 사항을 적용하려면 로그아웃했다가 다시 로그인하세요.