shell 在xterm启动时自动运行tmux:最优雅/正确的解决方案是什么?

vkc1a9a2  于 2023-06-30  发布在  Shell
关注(0)|答案(4)|浏览(133)

我正在尝试设置我的工作站,使tmux为每个启动的终端(xtermgnome-terminal...)运行。我想把tmux加到.bashrc上;问题是,如果我出于某种原因启动bash两次,它会在当前tmux中启动第二个tmux
所以:

  • 有没有一种方法可以检测到,也许从.bashrc,当前的bash是'第一个',而不是第二个在同一终端启动?
  • 还有其他好的想法/最佳实践/ bash设计模式吗?
llycmphe

llycmphe1#

您可以将以下内容添加到.bash_profile

SHELL=tmux

如果命令行上没有给出任何命令,则xterm首先检查要运行的命令。

vhmi4jdf

vhmi4jdf2#

合并前面两个答案:

alias xterm='SHELL=tmux xterm'

只启动xterm就可以获得所需的行为,但是仍然可以使用xterm进行其他操作,比如xterm top

tzdcorbm

tzdcorbm3#

如何将xterm别名化为xterm tmux
只需将以下行添加到.bashrc

alias xterm='xterm tmux'
wrrgggsh

wrrgggsh4#

只有在登录时,Bash才会执行~/.bash_profile,其中应该包含~/.bashrc,但不应该使用exit,否则会话将结束。如果~/.bash_profile不存在,则执行~/.bash_login。如果~/.bash_profile和~/.bash_login都不存在,则执行~/.profile。我喜欢使用~/.bash_login。
因此,~/.bash_login应该包含:

# use tmux instead of xterm
if [[ -z "$DISPLAY" ]] \
      && [[ "$TERM" != tmux* ]] \
      && hash tmux 2>/dev/null; then
  exec tmux new-session
fi

注意:如果你已经登录,~/.bashrc会被bash执行。

相关问题