重新连接的tmux会话未导入〜/ .bashrc

时间:2018-11-26 19:04:47

标签: vim tmux iterm2

我正在使用与tmux集成的iTerm2。我的正常工作模式是先在Mac上打开iTerm2终端,然后再SSH开发我的开发虚拟机。

我的开发VM已安装了tmux,因此我可以将tmux会话重新连接到我的开发VM。

问题是当我第一次创建tmux会话时,它将毫无问题地获取〜/ .bashrc。 但是,如果我清理分离tmux会话,然后再重新附加这些tmux会话,则〜/ .bashrc将不会被获取。

我包括了

if [ -f ~/.bashrc ]; then source ~/.bashrc; fi

在〜/ .bash_profile,.profile,.bash_login中。

还包括

set-option -g default-command "exec /bin/bash"

到〜/ .tmux.conf

1 个答案:

答案 0 :(得分:1)

正如动词“ re-attach”所暗示的那样,当断开连接时,您的tmux会话(以及在其中运行的Bash shell)将在您的开发机器上保持运行,以便以后可以重新连接到同一会话。 (这是tmux的主要功能:通常,外壳程序直接连接到您的终端或SSH会话,因此,当您关闭/断开外壳程序时,该外壳程序无法读取和输出,因此必须退出。tmux提供两者之间是一个虚拟终端,因此外壳上要挂上一些东西(即使没有人看到输出并且当前没有人输入任何东西),并且tmux处理会话管理。

应用程序(例如Bash和Vim)通常仅在启动时读取其配置。由于Bash保持运行状态(您可以通过ps -o etime --pid $$进行验证),因此它不会注意到您正在通过tmux重新连接,并且没有理由重新加载其配置-仍然应该在tmux中定义并保留所有内容会议。如果您需要重新加载(更改的)配置,则必须明确地执行此操作(source ~/.bashrc),或打开一个新的Shell。

相关问题