私はしばらくtmuxを使ってきて、とても満足しています。ほとんどの場合、必要なのでデフォルトのシェルに設定しました(正確にはguake)。
それは良く、私はそれに非常に満足しています。
しかし、時にはtmuxを終了し、きれいなシェルを持つ必要がありますが、デフォルトではtmuxを使用しているので、セッションを終了すると後で別のtmuxが表示されます。
だから私の質問は:交換可能ですか?多重化プロセス与えられたシェルを使用しますか?
exec
もちろん、同様のことは、tmux自体ではなくtmux内のシェルを置き換えるため、機能しません。
ベストアンサー1
私はtmuxがこれを行うことができるとは思わない。 Cプログラミングを知っていれば、はんだ付けするのは簡単です。
あなたができることの1つは、ラッパーシェルスクリプトでtmuxを呼び出し、スクリプトが終了するかどうかを決定することです。 tmuxが終了したときに対話型シェルを実行するようにシグナルをラッパーに送信します。ラッパースクリプトのテストされていない概念証明は次のとおりです。
export TMUX_PARENT_PID=$$
trap 'exec bash -i' USR1
tmux
存在する~/.tmux.conf
:
update-environment DISPLAY WINDOWID SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PID SSH_CONNECTION TMUX_PARENT_PID
tmux 内で分離後にシェルプロンプトを取得します。
TMUX_PARENT_PID=$(tmux show-environment | sed -n 's/^TMUX_PARENT_PID=//p')
kill -USR1 $TMUX_PARENT_PID
tmux detach-client