回答:
Macを使用していて、/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
tmuxの実行時になぜPATHの先頭に追加され続けるのか疑問に思っている場合は、/etc/profile
ファイルから実行されるpath_helperというユーティリティが原因です。
tmux(またはbash)をソースにしないように簡単に説得することはできません/etc/profile
(何らかの理由でtmuxは常にログインシェルとして実行されるため、/ etc / profileが読み取られます)が、path_helper don PATHにねじ込まないでください。
トリックは、path_helperを実行する前にPATHが空であることを確認することです。私の~/.bash_profile
ファイルにはこれがあります:
if [ -f /etc/profile ]; then
PATH=""
source /etc/profile
fi
path_helperを実行する前にPATHをクリアすると、デフォルトのPATHが(以前に)選択したPATHの前に追加されなくなり、残りの個人bashセットアップスクリプト(コマンドをさらに下に.bash_profile
、または.bashrc
からソースを取得した場合.bash_profile
)をセットアップできるようになりますそれに応じてPATH。
理にかなっていることを願っています...
-f
で-e
、私はそれがあったと思いますがチェックしない限り、私は個人的に私がログインしたときに実行されますスクリプトからファイルを試してみて、ソースではないでしょう。私は多くの異なるマシン(およびオペレーティングシステム)でbashスクリプトを再利用する傾向があるので、それらが防弾であることを確認したいです。他のいくつかのUNIXバリアントが別のUNIXバリアントと呼ぶかもしれないと想像できます。
~/.bash_profile
を私の幸せなtmuxの世界に正気を取り戻しました。
set -g default-command "${SHELL}"
で.tmux.conf
強制的に非ログインシェルを使用します。あなたは通常、オープンtmuxはすでにログインした後ので、私は、それらとにかくポイントが表示されていない。
番号; $PATH
多くのシステムはユーザー設定の順序に依存しているため、並べ替えはあまりにもクレイジーです。
ただし、tmux はシェルを「ログイン」モードで起動する~/.profile
ため、再びソースが取得されます。これはPATH=/my/dir:/another/dir:$PATH
、そのファイルに何かがあれば、それが再び行われ、$ PATHがを含むことを意味します/my/dir:/another/dir:/my/dir:/another/dir:(etc.)
。これを回避するには、別の変数を使用して以下を確認できます。
if [ "$_SKIP_PROFILE" ]; then
return 0
else
export _SKIP_PROFILE=y
fi
export PATH="/my/dir:/another/dir:$PATH"
if [ -n "$TMUX" ]
自分自身の条項の後ろに隠していますが、私は疑問に思っていました-は[ -f /etc/profile ]
本当に重要ですか?それ/etc/profile
が常に通常のファイルであると想定するのは安全ではありませんか?