私のLinux端末プロファイル(.bash_profile、.profile、.bashrc)は、前にいくつかのカスタムディレクトリを追加して$ PATHを拡張します。これは一度だけ発生します(そして一度だけ発生するように強制するためにいくつかのENV変数ベースのガードも含めました)。また、私のカスタムディレクトリの前に.bash_profile
.rvmスクリプト()を追加しました。~/.rvm/scripts/rvm
これらのRVMディレクトリは最前面になければなりません。
きれいなbashセッションにある限り、すべてが正常です。
ただし、実行すると、tmux
設定ファイルのディレクトリエントリがPATHの前に二重に追加されます(ENV変数の保護に関係なく)。 tmuxには2つのENV変数環境があり、それらをマージしているようです。
.rvmスクリプトの前に追加されたエントリは一度だけ前に追加され、tmuxシナリオでは最初に終わらないため、問題になります。
これが起こらないようにするにはどうすればよいですか?
編集 - 追加情報:
すべてのPATH追加項目は前にあり、().profile
で囲まれています。私のすべてのGUI端末は「ログインシェル」として実行されます。.bash_profile
. ~/.profile
各構成ファイルに二重埋め込みを防ぐために、次の形式のガードを使用します。
if [ "$PROFILE_SOURCED" != "true" ]; then
export PROFILE_SOURCED=true
...
fi
PATHに項目を追加することはexport PATH=entry:$PATH
。
ベストアンサー1
回避策:
私のPATH操作コードの周りにガードを配置しました。
.profile
if [ "$PATHS" != "true" ]; then export PATHS="true" #Manipulate and export PATH over here fi
.bash_profile
周辺ファイルレベルの保護が削除されました。.bashrc
重要: 再起動サーバー
tmux
。 (killall tmux
) - マニュアルは、サーバーが親シェルから継承した独自の環境を維持していることを示しています。設定ファイルが変更されると、tmux
再起動が必要です。