而不必键入tmux
每一次, 我怎么会tmux
一直被用于新的会话窗口 ?
所以,如果我没有终端窗口打开,然后我打开一个,这怎么可能第一次会议在tmux
?
似乎是一个.bashrc
那种也许事情?
而不必键入tmux
每一次, 我怎么会tmux
一直被用于新的会话窗口 ?
所以,如果我没有终端窗口打开,然后我打开一个,这怎么可能第一次会议在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会议,导致嵌套tmuxen无限多它可以是,呃,很烦人(这么说,这看起来很酷)。
然而,有一个非常小的风险这可以使bash
的行为的方式,其他程序不期望的,因为运行bash都不可能使其变成TMUX过程,所以它可能是更好的来修改你如何开始你的终端模拟器。
我用一个小的可执行shell脚本~/bin/terminal
(含~/bin
在$PATH
,所以它会自动找到),看起来有点像:
#!/bin/sh
exec gnome-terminal -e tmux
(我不使用GNOME终端,所以你可能需要删除exec
,我不知道。)
现在,只要您运行terminal
素文字你有TMUX终端。 您可以添加到您的菜单/桌面/键盘快捷键来替代默认的终端。
(这种方法也可以让你更轻松地自定义其他的东西关于终端仿真器后,如果你的愿望。)
我原来的,接受的答案,停在最近一次升级后,我的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系统现在。
如果你想有一个TMUX会话,把你的〜/ .bashrc对于bash或〜/ .zshrc为zsh中执行以下操作:
tmux attach &> /dev/null
if [[ ! $TERM =~ screen ]]; then
exec tmux
fi
该tmux attach
线 ,以确保如果有它附加到会话,如果没有会话,你不会得到关于“ 无会话 ”的警告。
对我来说,我会爱我TMUX要开始我每次外壳到我的远程机器的时候,当我脱离或退出TMUX,连接应自动关闭。 挖掘到这个问题了一会儿后,下面的代码不正是我想要的东西,被认为是最优化的,以我的知识。
[ -z "$TMUX" ] && { tmux attach || exec tmux new-session && exit;}
请注意,此行应该是在你的.bashrc文件,以确保它是先加载的第一道防线。 我们不能把一个“执行”呼叫前面的“TMUX重视”,因为高管与TMUX一个替代bash进程后,连接将被即使没有会话连接到关闭。 因此,我们需要一个“退出”电话后,我们分离或退出的连接会话终止连接。 但投入前的“执行”新会话命令是罚款,这是要执行的最后一个命令。
附加的代码以下行的端部.bashrc
,
[[ $TERM != "screen" ]] && exec tmux
我开始与这个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
我刚才提出的键盘快捷键(在Linux Mint的Ubuntu的没有,所以我不知道如果是这样容易)...
这可能是很难看到,但自定义的快捷键是gnome-terminal --window --maximize -e tmux
。 这将启动一个新的gnome-terminal
窗口最大化,然后exec
茨tmux
为您服务。
我另外还有一个启动自定义快捷方式 “正常” gnome-terminal
最大化(这是不一样-e tmux
)。
我觉得这是最好的方式,因为你就可以开始你想要的任何方式任何终端,是最定制的方式。
要启用登录和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,做这个的。
在XFCE4(我运行Fedora 24 Xfce定制版,这是伟大的),我发现最简单的解决方法是编辑,以使他们运行面板的快捷方式:
XFCE4末端-e TMUX
此相同的命令可以用来替代键盘应用程序快捷方式。
我以前插入的if语句到我的.bashrc,但它造成的登录失败(环回登录框,每当输入了正确的密码)。
对于Thunar中的开放终端的命令命令在这里略微不同。 要改变这种转到:
Thunar中>编辑>配置自定义操作...>打开终端这里> Edit按钮,并替换:
外切开放 - 工作目录%F --launch虚拟终端
用:XFCE4末端 - 工作目录%F -e TMUX
一个一衬里也可以确保终端类型设置正确256个色:
[ -z "$TMUX" ] && export TERM=xterm-256color && exec tmux
如何加入
# 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