bash_profile
私を入れるのが好きです。Gitリポジトリシェルを介してアクセスできるすべてのコンピュータに複製します。tmux
ほとんどの場合、user@host
シェルプロンプトの従来の場所ではなくステータス行に文字列を表示するためです。
ただし、私が使用しているすべてのサイトにこのtmux
プログラムがインストールされているわけではなく、常に使用されていない可能性があります。tmux
セッションに参加していない時間を検出し、それに応じてプロンプトを調整したいと思います。これまでのところ、私の半分焼いたソリューションは.bash_profile
次のとおりです。
_display_host_unless_in_tmux_session() {
# ???
}
export PROMPT_COMMAND='PS1=$(_display_host_unless_in_tmux_session)${REST_OF_PROMPT}'
(毎回確認するのが最善のアプローチではないかもしれないので、より良い方法の提案を歓迎します。Bashスクリプトは私の強みではありません。)
ベストアンサー1
TMUX
tmuxはtmuxセッション内で環境変数を設定し、にTERM
設定されます。これは100%信頼できる指標ではありませんが(たとえば、内部で実行されているのか外部で実行されているのかscreen
簡単にはわかりません)、実際には十分です。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