私が読んださまざまな提案に基づいて、ファイルとファイルを.profile
分離しました。変更後に環境を更新し、シェルをシャットダウンして再開するのを防ぐために使用する.bashrc
エイリアスがあります。しかし、現在、2つの問題があります。bin
.profile
.bashrc
$PATH
デフォルト値が前に追加されるため、更新するたびに私の値が大きくなります$PATH
。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
アプリケーション設定では、ターミナルエミュレータにログインシェルを実行させることができます。