1
起動時にbashによって実行されているスクリプトを調べる
bashターミナルを起動した後、PATH変数に重複したエントリが含まれていることに気付きました。私の端末が起動ログインシェルは、そう~/.bash_profile、調達が続いている~/.profileと~/.bashrc。~/.profile重複するパスエントリを作成するのは、その中だけです。 教訓的であるために、これは、ソースされるべきであるファイルがソースされるべき順序です: Sourced /etc/profile Sourced /etc/bash.bashrc Sourced .bash_profile Sourced .profile Sourced .bashrc 誰かがこれを「PATH変数に重複が含まれている」とマークする前に、読み続けてください。 最初は~/.profile、これは2回ソースされていることと関係があると考えたため、ソースされるたびにログファイルにファイルを書き込むようにしましたが、驚くべきことに、1つのエントリのみがログに記録されました。さらに驚くべきことは、にあったエントリをコメントアウト~/.profileすると、PATH変数にまだエントリが表示されるという事実です。これにより、3つの結論に至りましたが、そのうちの1つはすぐに除外されました。 bashは有効なbashコメントを無視し、引き続きコメント付きコードを実行します ~/.profile出力を出力するコード(たとえばログファイル)を読み取り、無視するスクリプトがあります 別の~/.profile場所から調達されている私の別のコピーがあります 最初の1つは、いくつかの迅速なテストのため、そうではないとすぐに結論付けました。2番目と3番目のオプションは、助けが必要な場所です。 端末の起動時に実行されるスクリプトのログを収集するにはどうすればよいですか?echobashがソースであるかどうかを確認するためにチェックしたファイルで使用しましたが、端末で入力を開始する準備ができた時点まで実行を追跡する決定的なメソッドを見つける必要があります。 上記が不可能な場合は、実行中のスクリプトを確認するために他の場所を探すことができます。 今後の参考資料 これは、パスに追加するために現在使用しているスクリプトです。 function add_to_path() { for path in ${2//:/ }; do if ! [[ "${!1}" =~ "${path%/}" ]]; then # ignore last / new_path="$path:${!1#:}" export "$1"="${new_path%:}" # remove trailing : …