bash_profileを保持するのが好きです gitリポジトリに入れて、シェルアクセスできるマシンにクローンします。 tmuxにいるので ほとんどの場合、私は[email protected]を持っています シェルプロンプトの従来のスポットではなく、ステータス行の文字列。
私が使用しているすべてのサイトにtmuxがあるわけではありません ただし、インストールされているか、常に使用しているとは限りません。 tmuxにいないことを検出したい セッションし、それに応じてプロンプトを調整します。これまでのところ、.bash_profileにある中途半端なソリューション 次のようになります:
_display_host_unless_in_tmux_session() {
# ???
}
export PROMPT_COMMAND='PS1=$(_display_host_unless_in_tmux_session)${REST_OF_PROMPT}'
(毎回チェックするのはおそらく最善の方法ではないので、これを行うためのより良い方法についての提案を受け入れています。Bashスクリプトは私の得意ではありません。)
承認された回答:
TmuxはTMUXを設定します tmuxセッションの環境変数であり、TERMを設定します screenへ 。これは100%信頼できる指標ではありません(たとえば、screenを実行しているかどうかを簡単に判断することはできません tmux内 またはtmux screen内 )、ただし実際には十分なはずです。
if ! { [ "$TERM" = "screen" ] && [ -n "$TMUX" ]; } then
PS1="@$HOSTNAME $PS1"
fi
これをPROMPT_COMMANDを介して設定された複雑なプロンプトに統合する必要がある場合 (ちなみに、これはbash設定なので、エクスポートしないでください):
if [ "$TERM" = "screen" ] && [ -n "$TMUX" ]; then
PS1_HOSTNAME=
else
PS1_HOSTNAME="@$HOSTNAME"
fi
PROMPT_COMMAND='PS1="$PS1_HOSTNAME…"'
tmuxがインストールされているかどうかをテストする必要がある場合:
if type tmux >/dev/null 2>/dev/null; then
# you can start tmux if you want
fi
ちなみに、これはすべて~/.bashrcに入れる必要があります 、~/.bash_profileではありません (.bashrcと.bash_profileの違いを参照してください)。 ~/.bashrc すべてのbashインスタンスで実行され、プロンプトやエイリアスなどのシェルのカスタマイズが含まれています。 ~/.bash_profile ログイン時に実行されます(ログインシェルがbashの場合)。奇妙なことに、bashは~/.bashrcを読み取りません ログインシェルでは、~/.bash_profile 含む必要があります
case $- in *i*) . ~/.bashrc;; esac