shell - 登录时安全执行 tmux

标签 shell exec tmux fish

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

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

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

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

  • 捕获错误并回退到“普通”shell 执行(即只有 fish 而没有 tmux)
  • 不必两次退出登录 - 一次退出 tmux然后再次退出fish

?

最佳答案

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

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

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

关于shell - 登录时安全执行 tmux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35978020/

相关文章:

linux - 如何在unix中获取进程名称

python - tmux识别了Conda env,但仍使用默认的python

tmux - 在 os x lion 上安装新的 tmux 返回 "git: Permission denied"

java - 通过java运行Shell命令

tmux - 在 Tmux 中绑定(bind) Escape 键

linux - 如何在 *nix 上查找/grep 目录名称匹配 "x"但不匹配 "y"的所有路径?

C中创建shell,execv()无法执行大部分命令

linux - 如果找到第一个字符为 "<"的行,则打印第一个字符为 ">"的行的第一次出现

c - execv 未知路径使用情况

Node.js 拦截 process.exit