IntelliJ IDEA 终端未执行 .bashrc 文件

35

我在.bashrc文件中定义了一些别名,希望在Intellij IDEA的终端中使用。为什么.bashrc文件没有被执行?


我的问题是从文档中作为Android Studio GUI启动。我根据此答案更新了我的系统路径:https://dev59.com/3nVC5IYBdhLWcg3w9GHM#3756686 - notbad.jpeg
16个回答

52

.bashrc仅在Bash以“交互”模式运行时加载。出于某种原因,IntelliJ默认以非交互模式运行Bash,但这很容易更改。打开IntelliJ设置窗口,然后打开“工具 -> 终端”,并将-i 添加到Shell路径中。

(请注意,在此屏幕截图中,我还更改了默认shell,因为我使用的是Mac,这使得更新/bin/bash变得困难。除非您安装了不同版本的Bash,否则不要盲目复制此更改!)

输入图像描述


这是最佳解决方案,必须将其标记为最佳答案! - 0xDEADBEEF
3
因此,如果您的“终端> Shell路径”设置调用bash -i(交互式),它将在打开新选项卡时运行~/.bashrc; 如果它调用bash(非交互式),则会运行~/.bash_profile在macOS Catalina上通过WebStorm 2020.3.3进行了验证。 - Ricardo
这个解决方案在我的Windows Git Bash环境中不起作用。相反,有效的解决方案是提供的:https://intellij-support.jetbrains.com/hc/en-us/community/posts/205437150/comments/204862230 - Barney
1
@Barney 有趣... --login -i 也应该可以工作,但是 login 可能不是你想要的。虽然我不知道为什么 -i 单独不能解决你的问题。 - Kyle Strand
1
@KyleStrand 哦,--login-l单独使用(不带-i)可以满足我需要的目的,即加载.bash_profile。这个SO问题是关于.bashrc的,所以我现在意识到这是不相干的。无论如何,谢谢你,随意忽略! - Barney

15

这是唯一对我有效的解决方案。然而,我没有一个~/.bash_profile文件。 - Brice

12

在您的主目录中,将这些行添加到.profile文件中(如果不存在该文件,则创建它),以便源化.bashrc

if [ "$SHELL" = "/bin/bash" ]; then
    . ~/.bashrc
fi   

Kenavoz,我找到了这个解决方案。我问这个问题是想知道为什么它不是默认源以及为什么你的解决方案有效。谢谢。 - Alexander Suraphel
你在Intellij IDEA的终端设置中定义了bash路径吗? - SLePort
默认情况下是 /bin/bash。我为什么要改变它呢? - Alexander Suraphel
有道理!那很可能是这种情况。 - Alexander Suraphel
Kenavoz,我刚刚检查了一下我的~/.profile文件,它大概长这样:# 如果正在运行bash if [ -n "$BASH_VERSION" ]; then # 如果存在,就包含.bashrc if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi 我认为这应该足够了,对吧? - Alexander Suraphel
显示剩余2条评论

10

对我来说,改变这行

Exec="/opt/idea-IU-183.4284.148/bin/idea.sh" %f

Exec=bash -ic "/opt/idea-IU-183.4284.148/bin/idea.sh" %f 

工作了。我们利用交互式 shell 载入 .bashrc 的技巧 :)


虽然这个解决方案高度依赖于安装环境,但我在另一个案例中发现它很有用。我使用 nvm 的 node.js,并且为了让 node 在 PATH 中可用,.bashrc 应该在 IDE 之前执行。我改进了这个解决方案:bash -ic "exec /path/to/webstorm.sh %f",也就是处理 %f 并使用 exec 替换 bash。 - Konstantin Pelepelin
这个解决方案对我在Ubuntu 20.04上有效。谢谢! - jyu
在我的 Kubuntu 20.04 上也可以工作。通过 NPM 安装的 NPM 在委托给 shell exec 进行 maven 构建时不可用。 - Marius Schmidt
这个至少在Ubuntu 20.04.5 LTS上有效。如果有人找不到替换路径,请看这里:~/.local/share/applications/jetbrains-rider.desktop或intellj或webstorm。 - Azerue

9
在Mac OSX Catalina上,"/bin/bash"~/.zprofile对我有用:

enter image description here

更新:

苹果已将默认 shell 更改为 zsh。因此,您需要重命名配置文件。现在,.bashrc 变成了 .zshrc,而 .bash_profile 则变成了 .zprofile


1
对我来说重要的信息是,ZSH现在是Mac OS Catalina的新标准。 - Chris P. Bacon

3

我的设置在~/.bash_profile文件中。我通过以下方式解决了这个问题:

echo "source ~/.bash_profile" >> .profile

2
sudo echo ". ~/.bashrc" >> /etc/bash.bashrc

1
据我所理解,Idea只加载默认的bash配置文件。通过在其末尾添加你的家目录下的.bashrc文件的源代码,它将被默认加载。顺便说一句,第一个答案对我无效。 - Ognjen
7
虽然这可能有效,但我不会这样做。我经常更改我的 .bashrc 文件。.bashrc 文件包含每个用户的配置,而 /etc/bash.bashrc 用于使用系统的所有用户。建议使用的命令只是将整个配置添加到系统配置中,然后应用于使用系统的每个用户。显然,Intellij IDEA 会获取系统文件,但不会获取供个人用户使用的文件。 - Matti

1
我注意到只有当我第一次安装IntelliJ并直接通过bin/中的idea.sh脚本运行时,.bashrc才不会被调用。

一旦我通过工具->创建桌面条目...创建桌面条目并从Ubuntu dash启动它,.bashrc会被正确调用。


1
由于“>”运算符不会将sudo权限传递给写入进程,因此我进行了以下操作:
echo ". ~/.bashrc" | sudo tee /etc/bash.bashrc

1
如果您最近从bash切换到zsh,请前往~/.zshrc文件并在其中更新$PATH变量:

.zshrc中的默认值:

# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:/usr/local/bin:$PATH

将 PATH 变量更改为在 .bashrc 中设置的相同变量并取消注释。
# If you come from bash you might have to change your $PATH.
export PATH=$HOME/bin:/usr/local/bin:<my-bash-paths>:$PATH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接