シェル起動ファイルを処理しようとしていますが、なぜ私のファイルがetc/zshenv
2回実行されるのかわかりません。すべての起動ファイルにechoステートメントがあり、次のような結果が得られます。
In /etc/zshenv
In ~/.zshenv for user: davidkennell
In /etc/zshrc
In ~/.zshrc for user: davidkennell
In /etc/zshenv
iTerm2環境設定でzshをシェルに設定し、Profiles/general
設定で次のように実行してシェルを起動するように指示しました。/usr/local/bin/zsh
答え1
メッセージの順序が与えられると、コンテンツの一部が実行され.zshrc
ます/etc/zshenv
。これはsource/etc/zshenv
または他のzshインスタンスへの呼び出しである可能性があります。似たようなものを探しています。
. /etc/zshenv
source /etc/zshenv
zsh -c …
zsh /path/to/file
/path/to/file # which starts with #!/usr/bin/env zsh
またはそれらの変形。
問題の行は.zshrc
それ自体にあっても、その行が開始された別のファイルにある場合もあります。
zsh -x
または、実行してzsh -f -x ~/.zshrc
トレースで問題のあるコマンドを見つけることもできます。おそらく、ソースコードで見つけるよりも簡単です。
zshスクリプトである他のプログラムを実行することが最も検出されにくいです。これを行うには、簡単にすることができます。次へのアクセスを監視します。/etc/zshenv
。一方、これが発生した場合、これは完全に正常なものであり、これに対処することはできません。