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

Vim 重新连接的tmux会话未导入~/.bashrc,vim,tmux,iterm2,Vim,Tmux,Iterm2,我正在使用与tmux集成的iTerm2。我的正常工作模式是首先在Mac上打开iTerm2终端,然后通过ssh连接到我的开发虚拟机 我的dev-VM安装了tmux,因此我可以将tmux会话重新连接到我的dev-VM 问题是,当我第一次创建tmux会话时,它将毫无问题地生成~/.bashrc。 但是,如果我清除分离tmux会话,然后重新连接这些tmux会话,那么~/.bashrc将不会被来源 我包括 if [ -f ~/.bashrc ]; then source ~/.bashrc; fi 在~

我正在使用与tmux集成的iTerm2。我的正常工作模式是首先在Mac上打开iTerm2终端,然后通过ssh连接到我的开发虚拟机

我的dev-VM安装了tmux,因此我可以将tmux会话重新连接到我的dev-VM

问题是,当我第一次创建tmux会话时,它将毫无问题地生成~/.bashrc。 但是,如果我清除分离tmux会话,然后重新连接这些tmux会话,那么~/.bashrc将不会被来源

我包括

if [ -f ~/.bashrc ]; then source ~/.bashrc; fi
在~/.bash\u配置文件、.profile、.bash\u登录中

还包括

set-option -g default-command "exec /bin/bash"
对于~/.tmux.conf

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


应用程序(比如Bash和Vim)通常只在启动时读取它们的配置,它不会注意到您正在通过tmux重新连接,也没有理由重新加载其配置-所有内容仍应在tmux会话中定义和保留。如果您需要重新加载(更改的)配置,则必须明确地执行此操作(
source~/.bashrc
),或者打开一个新的shell。

嗨,Ingo,我很感谢你花时间回答我的问题。根据你的评论,我做了一些实验。更具体地说,我的问题只发生在使用iTerm2的Tmux集成时。这意味着:1)如果我使用标准的Tmux语法,比如说我使用
Tmux
创建一个Tmux会话,然后使用
tmux detach
分离,然后使用
tmux attach-t 0重新连接。一切正常2)如果我重新连接iTerm2的tmux与
tmux的集成-CC attach
,我在
~/.bashrc
中定义的base16 shell就没有来源,我的vim配色方案也就乱了。我需要寻找资料。巴什利亚,有趣的发现。不幸的是,我不能对iTerm2说什么。但是考虑到你的设置已经消失,这仍然意味着里面的外壳是一个新的,而不是原来的,对吗?这听起来好像不太对劲。此外,尽管base16 shell的源代码不正确,但是.bashrc设置的其余部分的源代码正确。。。我将与iTerm2团队讨论,然后Hi ingo我找到了答案,请看我在iTerm2开发人员的帮助下找到了答案。详情请参阅。希望它能帮助其他有同样问题的人。