登录时安全执行 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,这样我就可以:
- 捕获错误并回退 "plain" shell 执行(即只有
fish
没有 tmux
)
- 不必退出登录两次 - 一次退出
tmux
然后再次退出 fish
?
我想如果存在配置错误,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 脚本
我想在为我的用户登录 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,这样我就可以:
- 捕获错误并回退 "plain" shell 执行(即只有
fish
没有tmux
) - 不必退出登录两次 - 一次退出
tmux
然后再次退出fish
?
我想如果存在配置错误,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 脚本