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