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
答え2
以前の答えと同様に、変数をテストすると、環境変数が自分の寿命内に設定される${TERM}
極端なケースが発生する可能性があります。tmux
$ env|grep -i tmux TMUX=/tmp/tmux-1000/default,4199,5 TMUX_PANE=%9 TMUX_PLUGIN_MANAGER_PATH=/home/imil/.tmux/plugins/
特定の環境にいることを確認するには、tmux
次の点を確認してください。
$ [ -z "${TMUX}" ] && echo "not in tmux"
答え3
tmux
3.2以降を実行しているかOpenBSD 6.8以降またはtmux
ソースからビルド2020年5月16日更新TERM_PROGRAM
)、環境変数を使用できます。
if [ "$TERM_PROGRAM" = tmux ]; then
echo 'In tmux'
else
echo 'Not in tmux'
fi
以前のバージョンにはtmux
この環境変数はありません。
答え4
時にはアクセス権がないかもしれません$TMUX
し、$TERM
確かに信頼できないこともあります。その後、ウィンドウID(自分で取得したIDtmux
と次に取得できるID)を比較できますxdotool
。
if [ $(tmux showenv | awk -v FS='=' '/WINDOWID/{print $2}') \
-eq \
$(xdotool getactivewindow) ]
then
echo "This terminal is running tmux!"
fi