shell - 每当我启动新的 shell session 时,如何使 TMUX 处于事件状态?

标签 shell session terminal tmux

不必每次都输入 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/

相关文章:

linux shell 标题大小写

security - 将 user_id 存储在 session 中是否危险?

linux - .ksh 中的 IFS 行为异常

shell - CMake 的 execute_process 和任意 shell 脚本

shell - UNIX shell : sort a string by word length and by ASCII order ignoring case

java - el中的 session 设置并获取java类

php - 什么时候是将 $_SESSION 数组中的大量值写入数据库中的记录的最佳时机?

linux - 如何grep所有带有特定字母的单词?

c - 如何不断刷新屏幕,实时更新

java - 我怎样才能编译一个java程序从给定的文件夹运行?