.profileと.bashrcリフレッシュ

.profileと.bashrcリフレッシュ

私が読んださまざまな提案に基づいて、ファイルとファイルを.profile分離しました。変更後に環境を更新し、シェルをシャットダウンして再開するのを防ぐために使用する.bashrcエイリアスがあります。しかし、現在、2つの問題があります。bin.profile.bashrc

  1. $PATHデフォルト値が前に追加されるため、更新するたびに私の値が大きくなります$PATH
  2. fortune更新するのではなく、新しいシェルを起動するときにのみ必要ですbin

望ましくない副作用なしに環境を更新する最も正確でハッキング的ではない方法は何ですか? (システムパスをコピーし.profileいいえオプション! )

.profile

# LOTS OF EXPORTS
export ***
export ***
export PATH=.:$HOME/bin:***:$PATH

shopt -s extglob
[ -n "$BASH_VERSION" ] && [ -f "$HOME/.bashrc" ] && . "$HOME/.bashrc"
fortune

.bashrc

# LOTS OF ALIASES
alias ***
alias ***
alias bin='source $HOME/.profile; set +h'

# LOTS OF FUNCTIONS
foo() {}
bar() {}

答え1

環境を更新する最も簡単で簡単な方法は、現在のシェルセッションを終了して新しいセッションを開始することです。


現在のシェルから新しいログインシェルを起動することもできますが、これにより環境変数を変更してPATH一部の状態にリセットしなかった場合でもPATH

を使用して新しいシェルを起動することもできます。これにより、env -i bash -l新しいログインシェルを呼び出すenv -i前に環境が消去されます。bashこれは継承された環境が異なるため、新しい端末で新しいシェルを起動するのとは異なる場合があります。

答え2

インラインテストの使用と条件付きパスのエクスポートを検討する.bashrc

[[ $PATH =~ "$HOME/bin" ]] && export PATH="${HOME}/bin:${PATH}"

コマンドの場合は、ログインシェルでのみ実行されるコマンドに追加して、ログイン時にfortune実行できるようにすることができます。.bash_profileアプリケーション設定では、ターミナルエミュレータにログインシェルを実行させることができます。

関連情報