.bashrc 不是来自 iTerm + Mac OS X

Com*_*ist 75 mac bash

我在 Mac OS X 10.6 中使用 iTerm。似乎当我打开 iTerm 时,既不是.bashrc也不.bash_profile是来源。我可以说是因为.bashrc未设置定义的别名。怎么修?

Mar*_*ski 82

在 iTerm2 中,这些解决方案都不适合我。通过添加命令,我能够让它正确读取我的 .bashrc 文件

source ~/.bashrc 
Run Code Online (Sandbox Code Playgroud)

到我的 iTerm 配置文件的 Settings/General 中的Send text at start:字段。

在此处输入图片说明


小智 59

Bash 将提供 .bash_profile 或 .bashrc,具体取决于它的调用方式。如果它是登录 shell,Bash 会按顺序查找 ~/.bash_profile、~/.bash_login 或 ~/.profile,并获取它找到的第一个(并且只有那个)。如果它不是登录 shell 而是交互式的(像大多数终端会话一样),Bash 将提供 ~/.bashrc。

很可能,iTerm 正在寻找 ~/.bashrc。如果它被配置为作为登录 shell 启动,它将查找 ~/.bash_profile。这几乎可以肯定是配置文件中的错误,而不是 shell 没有获取它。

我会在每个文件的开头放一行。在 ~/.bash_profile 的顶部:

export BASH_CONF="bash_profile"
Run Code Online (Sandbox Code Playgroud)

在 ~/.bashrc 的顶部:

export BASH_CONF="bashrc"
Run Code Online (Sandbox Code Playgroud)

然后,打开一个新的 iTerm 并输入

$ echo $BASH_CONF
Run Code Online (Sandbox Code Playgroud)

这应该确认文件是来源,您可以查看文件的语法。

  • 为每个源文件设置不同的环境变量可以提供更多信息,也就是说,如果来源不止一个文件,您就会知道,而不仅仅是最后一个(如果不是来源的顺序)。 (3认同)
  • 我通过转到首选项-> 配置文件-> 常规和在命令下选择登录shell 发现它是一个登录shell。在 MacOS El Capitan 和 iTerm2 3.0.14 上有效 (2认同)

小智 30

我只是想知道你真的使用 Bash 吗?也许你可以使用echo $SHELL,很有可能你正在使用zsh,你安装on-my-zh 了吗?

Acutually我遇到了和你一样的问题,我通过配置~/.zshrc来解决它,而不是~/.bash_profile用于登录外壳或~/.bashrc用于非登录外壳。

也许你可以试试


小智 12

在我的 10.6 机器上~/.profile是来源。所以一个source .bashrc条目~/.profile应该可以完成这项工作。


小智 8

轻松修复。

1.打开你的~/.zshrc文件

2.在文件末尾添加以下行。

source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)


Kit*_* Ho 6

在我的 10.9 机器上 ~/.bash_profile 是来源。所以 ~/.bash_profile 中的源 .bashrc 条目应该可以完成这项工作。