因此,我遇到了一些我无法解释的非常奇怪的行为。我最近跳上了tmux的潮流,并设置了我的shell配置,以便在打开终端窗口时自动启动tmux。大约在同一时间,我开始了一个bug,在那里打开一个新的终端会话会正确启动TMUX但随后显示:.zshrc未在Intellij中加载的tmux中找到
zsh-newuser-install: startup files exist, aborting.
Use the argument -f if you want to force the function to be run again.
[email protected] /home/douglasparker%
现在我有一个很深入的配置,用我自己的PS1
它显然是不使用。不过,我可以通过简单地运行解决这个问题:
[email protected] /home/douglasparker% source ~/.zshrc
[email protected] (~)
[17-10-11 11:35:59]$
所以,简单地采购的zsh的运行配置修复它和负载的一切应该,这是没有意义的应该会自动运行,但仅仅是不。
我也发现这只发生在第一个tmux会话从嵌入Intellij的终端启动。如果我正常打开终端(或者甚至在Android Studio中),它会正常工作,并自动发出~/.zshrc
。然而,从Intellij开放具体产生这个错误。有趣的部分是,如果Intellij首先打开,则任何后续打开tmux的终端都将显示相同的问题。但是,如果我先打开另一个终端并将其打开,那么在Intellij中启动终端就能正常工作。
“首先”我的意思是没有现有的tmux服务器。如果我关闭退出所有打开tmux窗口(如tmux ls
产生“无法连接到服务器”),那么如果我打开的下一个会话来自通用终端,那么我很好,并将继续,直到全部 tmux窗口再次关闭。但是,如果第一个 tmux窗口来自Intellij,那么这个bug会继续,并且将继续为所有终端,直到我再次退出所有tmux窗口。
最低配置重现此我发现如下~/.zshrc
文件:
#!/bin/bash
# If this is a raw terminal, just open tmux and then exit
# The inner session will re-source this script and load the configuration
if ! { [ "${TERM}" = "screen" ] && [ -n "${TMUX}" ]; } then
# Open tmux immediately
echo "Sourced ~/.zshrc: Not in tmux" >> tmux.log
tmux
exit
else
# Must already be within tmux
echo "Sourced ~/.zshrc: In tmux" >> tmux.log
echo hello
fi
这样做只是检查它是否是TMUX内。如果没有,那么它会打开tmux,并在tmux停止后退出。在内打开一个会话应该第二次来源脚本,并打印hello
到tmux中的控制台。
如果没有TMUX会议开着,我推出一个正常的终端窗口(如果有是从一个正常的终端窗口现有TMUX会话和我启动在的IntelliJ终端),然后我得到预期的输出:
hello
[email protected] ~% cat tmux.log
Sourced ~/.zshrc: Not in tmux
Sourced ~/.zshrc: In tmux
[email protected] ~%
如果没有TMUX会议公开,我推出的IntelliJ内一个终端窗口,然后我得到的输出:
zsh-newuser-install: startup files exist, aborting.
Use the argument -f if you want to force the function to be run again.
[email protected] /home/douglasparker% cat tmux.log
Sourced ~/.zshrc: Not in tmux
[email protected] /home/douglasparker%
这是所有印刷的IntelliJ一个TMUX会话中。所以它正确地采购了~/.zshrc
文件一次并启动tmux,但它只是做而不是来源~/.zshrc
在tmux内第二次在这些非常具体的条件下,我不知道为什么。
我也尝试改变我的shell临时打击,发现问题确实不是在bash上重现。所以这个问题似乎来自于zsh,tmux和Intellij之间的整合。
我意识到这是一个令人难以置信的具体问题,但是有人知道可能会导致这种问题吗?查找zsh错误并没有帮助我找到原因。 Intellij是否有特殊的终端窗口可能会导致此行为?有没有任何记录的原因,为什么zsh会拒绝来源~/.zshrc
?
请参阅https://youtrack.jetbrains.com/issue/IDEA-165272。 – CrazyCoder
取消选中“壳集成”修复了它。那究竟做什么呢?我无法找到此设置所做的任何解释。 –
请参阅https://www.jetbrains.com/help/idea/terminal.html获取Shell集成选项的说明:如果选择此选项,终端会首先加载自定义rc配置文件(位于终端文件夹下的插件IntelliJ IDEA发行版),它提供了一个额外的设置,然后是用户的rc文件。请注意,目前shell集成适用于Bash/sh(bashrc),zsh(zshrc)和fish shell(config.fish)。 – CrazyCoder