Shell

用 exec 替換 tmux

  • May 13, 2020

我使用 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

引用自:https://unix.stackexchange.com/questions/67212