我正在使用与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
答案 0 :(得分:1)
正如动词“ re-attach”所暗示的那样,当断开连接时,您的tmux会话(以及在其中运行的Bash shell)将在您的开发机器上保持运行,以便以后可以重新连接到同一会话。 (这是tmux的主要功能:通常,外壳程序直接连接到您的终端或SSH会话,因此,当您关闭/断开外壳程序时,该外壳程序无法读取和输出,因此必须退出。tmux提供两者之间是一个虚拟终端,因此外壳上要挂上一些东西(即使没有人看到输出并且当前没有人输入任何东西),并且tmux处理会话管理。
应用程序(例如Bash和Vim)通常仅在启动时读取其配置。由于Bash保持运行状态(您可以通过ps -o etime --pid $$
进行验证),因此它不会注意到您正在通过tmux重新连接,并且没有理由重新加载其配置-仍然应该在tmux中定义并保留所有内容会议。如果您需要重新加载(更改的)配置,则必须明确地执行此操作(source ~/.bashrc
),或打开一个新的Shell。