私のホームディレクトリにaとaがあります.zshrc
。.zshenv
私のコマンドに新しいコマンドを追加しましたが、.zshenv
そのコマンドが3回以上実行されることがわかりました。誤って削除しsource
たことを認識し、その.zshrc
行を削除しましたが、まだ2回実行されました。
私はスクリプトに合計を反映しようとし、$0
最初のパスと2番目のパスを得ました。それはどういう意味ですか?発信者を示す「スタックトレース」を取得するより良い方法はありますか?$_
(~/.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
?または、変更を適用するには、ログアウトして再度ログインしてください。