登录时安全执行 tmux

Safely exec tmux upon login

我想在为我的用户登录 shell 后执行 tmux。我正在使用 fish,但我认为这个问题与任何 shell 有关。到目前为止,我已经按照这个问题中的建议完成了这项工作:https://askubuntu.com/questions/560253/automatically-running-tmux-in-fish,具体来说,将以下行添加到我的 config.fish:

test $TERM != "screen"; and exec tmux

但是,我对这种方法有一个主要问题,那就是如果 tmux 无法启动,也许如果我在我的 .tmux.conf 文件中引入了语法错误,shell 进程立即退出,使我退出会话。

有没有办法在新的 shell 执行中自动 运行 tmux,这样我就可以:

?

我想如果存在配置错误,tmux 会以非零(即失败)状态退出,因此您可能会放弃 exec 并手动退出,例如

if test $TERM != "screen"
    tmux
    and exit
end

但是,请记住 fish 总是 获取其所有配置文件,因此您需要将其包装在 if status --is-login 或类似文件中。

这对我有用:

if status --is-login
    source $HOME/.config/fish/login.fish
    tmux; and exec true
end

显然,您可能有也可能没有 login.fish 文件。我喜欢通过将当前会话可能不需要的代码放在单独的文件中来保持我的 config.fish 精简,所以我还有一个 interactive.fish 脚本