如何让 tmux 知道哪个 shell 在当前窗格中运行?

如何让 tmux 知道哪个 shell 在当前窗格中运行?

如果可能的话,我希望我的 tmux 状态栏显示当前正在活动窗格中运行的 shell。为了记录,我使用 Ubuntu Server 18.04。

我曾考虑使用变量 #{pane_pid} 来获取使用窗格打开的 shell 的 PID,并从中检索名称。

但是,如果您在当前窗格中启动了子 shell 或使用了 sudo su 并更改了 shell,则此方法将不起作用。在这种情况下,我希望 tmux 知道在窗格中运行的“最新”shell 的名称。

有什么方法可以检索这些信息吗?最好使用 tmux 变量,或者使用脚本(或组合)。

答案1

如果#{pane_current_command}效果不够好(无法跨越su),您将需要编写自己的脚本。

我建议使用ps -t #{pane_tty}而不是#{pane_pid}更可靠。

从多个正在运行的进程列表中找出哪个进程是“最佳”进程并不一定容易,但如果您只想要 shell,您可能就能让它工作。

您可以做的另一件事是让 shell 通过执行以下操作来设置标题:

printf "\033]2;$SHELL\033\\"

在 中PS1,然后您可以获得 中的窗格#{pane_title}

[ -n "$TMUX" ] && tmux selectp -T $SHELL或者,如果您始终在本地主机上,则只需运行 shell 即可。

相关内容