如何使 OS X 读取. bash_profile 而不是. profile 文件

我已经阅读了很多关于不把你的定制命令放进去的建议。个人资料」档案。而是创建一个。为自己添加 bash _ profile 并添加别名等等。

但是,当我打开新的终端,如果只有。Bash _ profile,OS X 没有导出/提供其中提到的命令。我必须手动找到。Bash _ profile.

如果我创造。配置文件,在打开一个新的终端时,我的所有命令。配置文件执行,并将随时可用。

您能帮助我理解它是如何工作的吗? 还有,什么时候使用. bashrc/. profile/. bash _ profile 文件。

谢谢!

122173 次浏览

根据 OS X 附带的手册页:

... 它按照这个顺序查找 ~/.bash_profile~/.bash_login~/.profile,并读取和执行第一个存在且可读的命令。启动 shell 时可以使用 --noprofile选项来抑制这种行为。

只有在 ~/.bash_profile~/.bash_login都不可读的情况下,它才应该读取 ~/.profile作为最后的手段。

在我所有的 OS X 系统中,我将 ~/.bash_profile设置为:

if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi

强烈建议您在 OS X 上这样做,以便让 bash 像您期望的那样读取 ~/.bashrc文件。

应该提到的是,Bash 将首先查找 /etc/profile文件,如 Bash 手册页中所述。

当 bash 作为交互式登录 shell 或非 inter- 调用时 ActiveShell 带有—— login 选项,< strong > 它首先读取并执行 com- 如果文件存在,则从/etc/profile 文件中删除。 读取后 那个文件,它查找 ~/. bash _ profile、 ~/. bash _ login 和 ~/. profile, 并从第一个命令中读取和执行命令 选项时可以使用—— noprofile 选项 Shell 开始抑制这种行为。

也有可能您的终端 shell 默认为 sh 而不是 bash:

$ echo $SHELL
/bin/tcsh

要将其更改为 bash,可以进入 Terminal-> Preferences-> Startup 选项卡,并将“ Shell OpenWith:”从“ Default login Shell”更改为 Command and value“/bin/bash”。

或者,您可以通过在命令提示符下执行以下命令来更改默认 shell:

chsh -s bin/bash

完成其中一个操作之后,打开一个新的 shell 窗口,您的. bash _ profile 应该是来源的。

我通过简单地将 bash(换行)添加到 ~/. bash _ profile 文件中解决了这个问题。

您可以使用 zsh来修复这个问题。

Z shell (也称为 zsh)是构建在顶部的 Unix shell bash(macOS 的默认 shell)的一个附加特性 建议使用 zsh超过 bash.

安装

  1. 使用 Homebrew: $ brew install zsh安装 zsh
  2. 安装 Oh My Zsh: $ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
  3. 移动到 .bash_profile设置 .zshrc文件
  4. 要应用所做的更改,您需要启动新的 shell 实例或运行: source ~/.zshrc

根据 苹果,

Zsh (Z shell)是所有新创建的用户帐户的默认 shell,从 macOS Catalina 开始。

因此,应该使用以下命令验证默认 shell:

$ echo $SHELL

如果结果是 /bin/bash,那么默认的 shell 是 BASH,如果结果是 /bin/zsh,那么默认的 shell 是 ZSH。

使用 $ cd ~/回到主页,创建配置文件(如果它不存在) ,并使用以下命令进行编辑:

对于 bash:

$ touch .bash_profile
$ open .bash_profile

对于 ZSH:

$ touch .zprofile
$ open .zprofile

对于其他发现这个问题的人来说,可以使用 .zshrc.IE 代替 bash _ profile 来处理 Mac 的新版本

open .zshrc

然后加上你需要的东西。

如果使用 zsh,可以通过将以下行添加到. zprofile 来源于. bash _ profile

if [ -f ~/.bash_profile ]; then
source ~/.bash_profile
fi