Shell
用 exec 替換 tmux
我使用 tmux 有一段時間了,對此我很滿意。因為我大部分時間都需要它,所以我將它設為我的預設 shell(準確地說是 guake)。
這很好,我對此非常滿意。
但有時,我需要退出 tmux 並擁有一個乾淨的 shell,但由於我預設使用 tmux,因此終止會話將導致稍後另一個 tmux。
所以,我的問題是:是否可以用給定的 shell替換tmux 程序?
當然,這樣的東西是
exec
行不通的,因為它替換了 tmux 內部的外殼,而不是 tmux 本身。
我不認為 tmux 可以做到這一點。如果您了解 C 程式,應該很容易修補。
您可以做的一件事是從包裝外殼腳本呼叫 tmux,並讓腳本決定是否退出。向包裝器發送一個信號,告訴它在 tmux 退出時執行互動式 shell。這是包裝腳本的未經測試的概念驗證:
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 中,在分離後獲得 shell 提示:
TMUX_PARENT_PID=$(tmux show-environment | sed -n 's/^TMUX_PARENT_PID=//p') kill -USR1 $TMUX_PARENT_PID tmux detach-client