如果可能的话,我希望我的 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 即可。