不必每次都输入 tmux
,如何让 tmux
始终用于新 session 窗口?
因此,如果我没有打开任何终端窗口,然后我打开一个,第一个 session 如何位于 tmux
中?
看起来像是.bashrc
之类的东西?
最佳答案
警告 这现在可能会“损坏”(使其无法打开终端窗口 - 这不好!)您的 Ubuntu 登录。请务必谨慎使用,并确保您的计算机上有第二个管理员帐户,您可以登录该帐户,以防您遇到与我相同的问题。有关更多详细信息和不同的方法,请参阅我的其他答案。
鉴于该警告,最简单的解决方案是将 tmux
调用附加到 .bashrc
的末尾,例如
alias g="grep"
alias ls="ls --color=auto"
# ...other stuff...
if [[ ! $TERM =~ screen ]]; then
exec tmux
fi
请注意,exec
意味着打开终端时启动的 bash 进程被 tmux
替换,因此 Ctrl -B D
(即与 tmux 断开连接)实际上关闭窗口,而不是返回到原始的 bash 进程,这可能是您想要的行为?
此外,还需要 if
语句(它检测当前 bash 窗口是否已在 tmux 进程中),否则每次启动 tmux 时,所包含的 bash 进程将尝试启动自己的 tmux session ,导致无限数量的嵌套 tmuxen,这可能非常烦人(也就是说,它看起来很酷)。
但是,这可能会导致 bash
以其他程序不期望的方式运行,因为运行 bash 可能会导致它变成 tmux 进程,因此存在很小的风险修改终端模拟器的启动方式可能会更好。
我使用一个小的可执行 shell 脚本 ~/bin/terminal
(~/bin
在 $PATH
中,所以它会被自动找到)看起来有点像:
#!/bin/sh
exec gnome-terminal -e tmux
(我不使用 gnome-terminal,因此您可能需要删除 exec
,我不确定。)
现在,每当您运行 terminal
scipt 时,您都会有一个带有 tmux 的终端。您可以将其添加到菜单/桌面/键盘快捷方式中以替换默认终端。
(如果您愿意,此方法还允许您稍后更轻松地自定义有关终端仿真器的其他内容。)
关于shell - 每当我启动新的 shell session 时,如何使 TMUX 处于事件状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11068965/