【问题标题】:~/.profile, ~/.bashrc, and ~/.bash_profile not running on new terminal start up~/.profile、~/.bashrc 和 ~/.bash_profile 未在新终端启动时运行
【发布时间】:2014-09-21 10:39:43
【问题描述】:

我正在尝试为我的终端创建一个永久别名。我将别名放在我的 ~/.profile、~/.bashrc 和 ~/.bash_profile 文件中,这些文件以前是空的。当我启动一个新终端时,bash 无法识别别名,但如果我获取其中任何一个,它就会识别。为什么当我打开终端时这些没有运行?我在 OSX 上。

【问题讨论】:

标签: macos bash terminal .bash-profile


【解决方案1】:

晚了一点,但在加载 zsh 时,文件 .zprofile 似乎等同于 .bash_profile 的文件。我用它来在启动时执行一些命令。当然,这只对使用 zsh 的特定 iTerm 设置有效。

https://zsh.sourceforge.io/Intro/intro_3.html

【讨论】:

    【解决方案2】:

    很可能,您需要自己创建文件,因为默认情况下它们似乎不存在。您应该授予它们执行权限以使其运行。

    ~ % sudo chmod 700 ~/.bash_profile

    此外,您应该检查文件的所有权。它们应该属于当前用户而不是 root。否则会出现permission denied 错误。

    ~ % ls -a -l

    ~ % sudo chown <user_name> ~/.bash_profile

    最后,请注意 bash 按顺序在您的主目录中查找 .bash_profile、.bash_login 和 .profile。如果找到第一个,Bash 将停止查找。 这意味着如果您同时拥有 .bash_profile 和 .profile 文件,则 .profile 将不会运行。 For more information

    希望这会对你有所帮助。

    【讨论】:

    • 如果您一开始没有错误地使用sudo 来操作您的个人文件,那么这些废话都不是必需的。这是一个常见的初学者错误,但对于其他情况仍然不是一个好的通用解决方案。
    • 同样,sudo 是必要且有用的唯一可能情况是您之前错误地使用了sudo。你永远不应该使用sudo 来操作你自己的文件,因为这将导致它们被root 而不是你自己拥有,这基本上是一个系统完整性错误。
    【解决方案3】:

    我的问题已通过取消选中 Preferences > General > tmux >

    得到解决

    使用“tmux”配置文件而不是连接会话的配置文件

    【讨论】:

      【解决方案4】:

      较新的 MacOS 版本使用 zsh 作为终端和 iTerm2 的默认 shell。运行echo $SHELL 以确认您是否属于这种情况。

      Zsh 在 shell 启动时查找 .zshrc 文件,因此要在获取 bash 配置文件内容的同时继续使用 zsh,您可以运行以下命令:

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

      打开一个新的终端窗口以使更改生效。

      【讨论】:

      • 如何撤消此操作?这对我有用,现在我的终端文本都搞砸了。
      • 这是严重缺陷。永远不要让一个 shell 访问另一个 shell 的启动文件。
      • @thenomadicmann 您应该编辑.zshrc 文件并删除您在最后一行添加的source 语句。
      • @tripleee 为了让您的反馈更具建设性,我建议您确定这种方法的一些风险并提出替代方案
      • @lchapo 这里的几个答案确定了其他方法。我认为这里没有必要更详细地解释风险,我在这里重复我在其他评论中说过的话;但很简单,在这个文件中使用 Bash-only 语法会破坏任何不支持该语法的 shell。 (Zsh 可以被配置为理解 Bash 语法,但这会让你不得不要求这个配置选项,这会引起人们对选择 Zsh 而不是 Bash 的理由的怀疑。)
      【解决方案5】:

      从 Catalina 开始,默认 shell 现在是 zsh。您可以使用chsh -s /bin/bash 将其改回bash,这应该会加载您的.profile.bash_profile

      【讨论】:

      【解决方案6】:

      source ~/.profile 添加到我的.bash_profile 对我有用。

      【讨论】:

        【解决方案7】:

        我猜你可能会使用其他 shell,例如 bash、tcsh、sh、zsh 等。

        source .bash_profile 放入适当的 'bashrc' 文件中将使自动加载恢复,即

        .login 用于 tcsh,.bash_profile 用于 bash,.zshrc 用于 zsh

        【讨论】:

          【解决方案8】:

          从 High Sierra 开始,终端和 iTerm 都希望首先加载 ~/.profile。所以我建议你在你的 .profile 中加入一行,让你的 Mac 像其他 Unix 一样工作:

          来源 ~/.bash_profile

          通过编辑这个文件,您不必搜索多个应用程序的菜单来覆盖 Apple 在每个应用程序中的奇怪行为。

          【讨论】:

          • 谢谢你的想法帮助了我
          • 这是不正确的,因为它会导致非 Bash shell 尝试获取为 Bash 保留的文件,并且可能包含与其他 shell 不兼容的语法。 (反向操作是无害的;将.bash_profile 编辑为为此设计的source ~/.profile。)
          【解决方案9】:

          为什么你的 shell 的初始化文件没有加载?

          与大多数事情一样,这取决于™

          我最近遇到了同样的现象,并通过以下练习来解决它:

          我使用 iTerm。 iTerm 默认运行一个登录 shell。在 iTerm Preferences > General > Command > (*) Login Shell 中验证 因此,我知道 ~/.bash_profile 总是会被调用。

          知道了这一点,我将以下内容放入我的 ~/.bash_profile 文件中:

          for file in ~/.{bashrc,bash_exports,bash_aliases,bash_functions}; do
              [ -r "$file" ] && source "$file"
          done
          unset file
          

          请注意,我为 .bashrc、.bash_exports 等使用单独的文件。它使事情分开且简单。

          还要注意 /etc/profile 是首先加载的,但由于我从未使用过该系统范围的 init 文件,我知道这不是我的问题。详情请查看$ man bash

          所以,我从 ~/.bash_profile 文件开始。

          我发现当我安装 Canopy Express 时,它的安装程序将我的 ~/.bash_profile 文件的内容替换为以下内容:

          # Added by Canopy installer on 2017-04-19
          # VIRTUAL_ENV_DISABLE_PROMPT can be set to '' to make the bash prompt show that Canopy is active, otherwise 1
          alias activate_canopy="source '/Users/lex/dev/python/User/bin/activate'"
          # VIRTUAL_ENV_DISABLE_PROMPT=1 source '/Users/lex/dev/python/User/bin/activate'
          

          附言Canopy 是一款出色的免费 python IDE,我强烈推荐。

          幸运的是,我备份了我的 ~/.bash* 文件,因此恢复起来很容易且快速地解决了我的问题。

          我的建议是了解对初始化文件的调用顺序,并从第一个文件开始,逐步解决,直到找到问题为止。

          哦,您可能想验证您使用的是哪个 shell(我使用 bash):

          ~ $ echo $SHELL
          /usr/local/bin/bash
          

          【讨论】:

            【解决方案10】:

            使用默认的 mac 终端,对我有用的是添加一个命令以在启动时运行以获取我的 .bash_profile。

            首选项 > 配置文件 > 启动 > 添加命令 'source ~/.bash_profile'

            Mac terminal preferences window screenshot

            可能会被认为有点 hacky,但它可以解决问题。

            【讨论】:

              【解决方案11】:

              当使用iTerm 来加载点文件时,这里需要做两件事。

              首先您应该将以下内容添加到您的.bash_profile

              [[ -s ~/.bashrc ]] && source ~/.bashrc
              

              其次,您需要确保在 iTerm 首选项中您的终端设置为启动登录 shell。

              希望这会有所帮助!

              【讨论】:

              • 耶!这解决了它!感谢您的帮助!
              猜你喜欢
              • 1970-01-01
              • 2019-01-20
              • 1970-01-01
              • 2020-04-29
              • 2018-04-24
              • 1970-01-01
              • 2013-09-20
              • 2019-08-02
              相关资源
              最近更新 更多