tmux 启动进程(如果尚未运行)

tmux 启动进程(如果尚未运行)

在我的 中.zshrc,我有一些逻辑会自动启动 tmux 会话,或者如果会话已经在运行,则提示附加到其中一个会话或创建一个新会话并附加到该会话。这一切都很好,但我有一个似乎无法正确实现的新要求:当新会话启动并且特定进程未运行时,启动该进程并创建一个新窗口;如果该进程正在某处运行,则只需正常启动一个新会话即可。

在这种情况下,我想irssi自动启动会议。以下内容($choice根据上面概述的选择过程)是我最接近让它发挥作用的:

exec tmux -2 new-session -A -s $choice $(pgrep irssi || echo "irssi; new-window")

当我只有一个会话时(这是大多数时间),这非常有效,但如果我尝试创建一个新会话,那么它会立即分离。

如果我将以上分解为条件:

if pgrep irssi; then
  exec tmux -2 new-session -A -s $choice
else
  exec tmux -2 new-session -A -s $choice "irssi; new-window"
  # splitting out `tmux new-window` also doesn't work
fi

...我有相反的问题,现在辅助(非 irssi)会话启动正常,不会立即分离,但 irssi 会话仅获得 irssi 窗口,并且不会出现新的 shell 窗口。 (这可以说比第一个版本更接近我想要的,但因为我几乎总是只有一个会话,所以获胜,因为这个版本迫使我Prefix-c在新窗口中执行此操作。)

相关内容