`/etc/zshenv`は、対話型の非ログインシェルのためにiTerm2で2回実行されます。

`/etc/zshenv`は、対話型の非ログインシェルのためにiTerm2で2回実行されます。

シェル起動ファイルを処理しようとしていますが、なぜ私のファイルがetc/zshenv2回実行されるのかわかりません。すべての起動ファイルに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。一方、これが発生した場合、これは完全に正常なものであり、これに対処することはできません。

関連情報