我怎样才能让TMUX被激活,每当我开始一个新的shell会话?(How can I make TMU

2019-06-25 12:59发布

而不必键入tmux每一次, 我怎么会tmux一直被用于新的会话窗口

所以,如果我没有终端窗口打开,然后我打开一个,这怎么可能第一次会议在tmux

似乎是一个.bashrc那种也许事情?

Answer 1:

现在 警告 这可能“腐败”(使其无法打开一个终端窗口- !这是不好的),你的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会议,导致嵌套tmuxen无限多它可以是,呃,很烦人(这么说,这看起来很酷)。


然而,有一个非常小的风险这可以使bash的行为的方式,其他程序不期望的,因为运行bash都不可能使其变成TMUX过程,所以它可能是更好的来修改你如何开始你的终端模拟器。

我用一个小的可执行shell脚本~/bin/terminal (含~/bin$PATH ,所以它会自动找到),看起来有点像:

#!/bin/sh
exec gnome-terminal -e tmux

(我不使用GNOME终端,所以你可能需要删除exec ,我不知道。)

现在,只要您运行terminal素文字你有TMUX终端。 您可以添加到您的菜单/桌面/键盘快捷键来替代默认的终端。

(这种方法也可以让你更轻松地自定义其他的东西关于终端仿真器后,如果你的愿望。)



Answer 2:

我原来的,接受的答案,停在最近一次升级后,我的Ubuntu14系统上工作。

无论是使用

[ -z "$TMUX" ] && command -v tmux > /dev/null && TERM=xterm-256color && exec tmux

要么

[ $TERM != "screen" ] && TERM=xterm-256color && exec tmux

将被甚至能登录阻止我。 我才能够解决这个因具有计算机上的第二个管理员登录。

在Ubuntu对我来说,修复(在OSX太)是改变我的终端程序实际运行TMUX代替,即

我还有

[ `uname -s` != Linux ] && exec tmux

作为我最后.bashrc线,但他只对我的Mac OSX系统现在。



Answer 3:

如果你想有一个TMUX会话,把你的〜/ .bashrc对于bash或〜/ .zshrc为zsh中执行以下操作:

tmux attach &> /dev/null

if [[ ! $TERM =~ screen ]]; then
    exec tmux
fi

tmux attach线 ,以确保如果有它附加到会话,如果没有会话,你不会得到关于“ 无会话 ”的警告。



Answer 4:

对我来说,我会爱我TMUX要开始我每次外壳到我的远程机器的时候,当我脱离或退出TMUX,连接应自动关闭。 挖掘到这个问题了一会儿后,下面的代码不正是我想要的东西,被认为是最优化的,以我的知识。

[ -z "$TMUX"  ] && { tmux attach || exec tmux new-session && exit;}

请注意,此行应该是在你的.bashrc文件,以确保它是先加载的第一道防线。 我们不能把一个“执行”呼叫前面的“TMUX重视”,因为高管与TMUX一个替代bash进程后,连接将被即使没有会话连接到关闭。 因此,我们需要一个“退出”电话后,我们分离或退出的连接会话终止连接。 但投入前的“执行”新会话命令是罚款,这是要执行的最后一个命令。



Answer 5:

附加的代码以下的端部.bashrc

[[ $TERM != "screen" ]] && exec tmux


Answer 6:

我开始与这个https://wiki.archlinux.org/index.php/Tmux#Bash和增强它以回收超脱会话,结交新朋友,如果所有会话已附加

# .bashrc

case $- in
    *i*)
    if command -v tmux>/dev/null; then
        if [[ ! $TERM =~ screen ]] && [[ -z $TMUX ]]; then
          if tmux ls 2> /dev/null | grep -q -v attached; then
            exec tmux attach -t $(tmux ls 2> /dev/null | grep -v attached | head -1 | cut -d : -f 1)
          else
            exec tmux
          fi
        fi
    fi
    ;;
esac


Answer 7:

我刚才提出的键盘快捷键(在Linux Mint的Ubuntu的没有,所以我不知道如果是这样容易)...



这可能是很难看到,但自定义的快捷键gnome-terminal --window --maximize -e tmux 。 这将启动一个新的gnome-terminal窗口最大化,然后exectmux为您服务。

我另外还有一个启动自定义快捷方式 “正常” gnome-terminal最大化(这是不一样-e tmux )。

我觉得这是最好的方式,因为你就可以开始你想要的任何方式任何终端,是最定制的方式。



Answer 8:

要启用登录和SSH会话TMUX,你可以添加到您的.bashrc的末尾:

# enable tmux at login
PNAME="$(ps -o comm= $PPID)";
if [ $PNAME == "login" ] || [ $PNAME == "sshd" ] ; then
  exec tmux
fi

该脚本将查找的bash shell的父进程。 如果的bash从或SSH登录开始,它将执行TMUX。 如果你想这与一个GUI终端工作,你可以添加在那里。 例如,如果你想自动启动TMUX,当你开始Ubuntu的标准gnome-terminal ,你可以使用这样的:

PNAME="$(ps -o comm= $PPID)";
if [ $PNAME == "login" ] || [ $PNAME == "sshd" ] || [ $PNAME == "gnome-terminal" ] ; then
  exec tmux
fi

我测试过上述活Ubuntu桌面,我能够在事后登录。 除非它调用login命令登录这不应该打破GUI登录。我不知道一个Linux GUI,做这个的。



Answer 9:

在XFCE4(我运行Fedora 24 Xfce定制版,这是伟大的),我发现最简单的解决方法是编辑,以使他们运行面板的快捷方式:

XFCE4末端-e TMUX

此相同的命令可以用来替代键盘应用程序快捷方式。

我以前插入的if语句到我的.bashrc,但它造成的登录失败(环回登录框,每当输入了正确的密码)。

对于Thunar中的开放终端的命令命令在这里略微不同。 要改变这种转到:

Thunar中>编辑>配置自定义操作...>打开终端这里> Edit按钮,并替换:

外切开放 - 工作目录%F --launch虚拟终端

用:XFCE4末端 - 工作目录%F -e TMUX



Answer 10:

一个一衬里也可以确保终端类型设置正确256个色:

[ -z "$TMUX" ] && export TERM=xterm-256color && exec tmux


Answer 11:

如何加入

# If not running interactively, do not do anything
[[ $- != *i* ]] && return
[[ -z "$TMUX" ]] && exec tmux

到.bashrc。 这也适用于zsh的。

来自https://wiki.archlinux.org/index.php/Tmux#Start_tmux_with_default_session_layout



文章来源: How can I make TMUX be active whenever I start a new shell session?