欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

macos 永久改变 shell 为 /bin/bash ,,当重启后 还是 /bin/bash AG chatgpt 有大用 有大大用

要在 macOS 上永久将默认 Shell 更改为 /bin/bash(即使重启后仍生效),请按以下步骤操作:


1. 确认 /bin/bash 可用

运行以下命令检查 /bin/bash 是否有效:

bash
ls -l /bin/bash

确保输出中包含 /bin/bash(例如:/bin/bash -> bash)。
⚠️ 注意:从 macOS Catalina 开始,默认 Shell 是 /bin/zsh,但 /bin/bash 仍存在(可能是较旧版本)。


2. 使用 chsh 更改默认 Shell  (我自己亲自做的 ,重启后 还是 /bin/bash)

bash
sudo chsh -s /bin/bash

输入密码后,会修改当前用户的默认 Shell。
在 macOS 上可能仍需额外步骤,因为系统可能会在重启后重置。


3. 解决 macOS 重置问题(关键步骤)

macOS 可能通过配置文件覆盖 Shell 设置。需通过以下方法强制生效:

方法 1:修改 /etc/shells 文件

确保 /bin/bash 在合法 Shell 列表中:

bash
sudo sh -c 'echo "/bin/bash" >> /etc/shells'

方法 2:通过系统偏好设置

  1. 打开 系统偏好设置 > 用户与群组

  2. 右键点击当前用户 → 高级选项

  3. 在 登录 Shell 字段中手动输入 /bin/bash,点击 OK

方法 3:配置终端模拟器

如果使用终端工具(如 iTerm2 或 Terminal.app),在其设置中指定默认 Shell 为 /bin/bash,避免依赖系统全局设置。


4. 验证更改

重启终端或执行:

bash
echo $SHELL

应显示 /bin/bash。若仍不正确,尝试完全重启 macOS。


5. 常见问题

  • 权限问题:确保使用 sudo 修改系统文件。

  • Shell 版本问题:macOS 的 /bin/bash 版本较旧(GPLv2 限制)。如需新版 bash,可通过 Homebrew 安装:

    bash
    brew install bash sudo sh -c 'echo "/usr/local/bin/bash" >> /etc/shells' chsh -s /usr/local/bin/bash

通过以上步骤,你的 macOS 将在重启后仍保持 /bin/bash 作为默认 Shell。如果问题持续,检查是否有其他配置(如 Shell 初始化文件)覆盖了设置。





要在 macOS 中永久将默认 Shell 更改为 /bin/bash(即使重启后仍生效),请按以下步骤操作:


方法 1:通过终端命令修改(推荐)

  1. 打开终端(当前 Shell 可能是 zsh

  2. 修改默认 Shell

    bash
    sudo chsh -s /bin/bash
  • 输入当前用户的密码确认。

  • 验证是否修改成功

    bash
    echo $SHELL
    • 如果显示 /bin/bash 表示修改成功。


    方法 2:检查终端应用设置(避免覆盖)

    某些终端应用(如 iTerm2)可能覆盖系统设置:

    1. 打开终端应用设置

    • 系统自带终端
      Terminal > Settings > Profiles > Shell
      选择 Default login shell(不要勾选自定义命令)。

    • iTerm2
      iTerm2 > Settings > Profiles > General > Command
      选择 Login Shell(不要填写自定义路径)。

  • 重启终端应用。


  • 方法 3:检查 Shell 配置文件(排除干扰)

    如果 ~/.bash_profile 或 ~/.zshrc 中有强制切换 Shell 的代码,请删除:

    bash
    nano ~/.bash_profile  # 删除任何包含 'exec zsh' 或类似命令的行
    nano ~/.zshrc         # 同上

    验证重启后是否生效

    1. 完全关闭所有终端窗口。

    2. 打开新终端窗口,执行:

      bash
      echo $SHELL  # 应显示 /bin/bash
      ps -p $$     # 检查进程名是否为 bash

    常见问题解决

    1. 权限问题
      确保命令用 sudo 执行(但 chsh 不需要 sudo):

      bash
      sudo chsh -s /bin/bash  # 非必要,普通用户直接 chsh 即可
    2. Shell 未注册
      检查 /bin/bash 是否在 /etc/shells 中(通常默认存在):

      bash
      cat /etc/shells  # 确保有 /bin/bash
    3. 系统更新重置
      macOS 大版本更新可能重置 Shell,更新后需重新执行 chsh


    最终效果

    • 所有新终端窗口SSH 登录脚本执行(如 #!/bin/bash)均会使用 /bin/bash

    • 系统重启后仍保持生效。

    ⚠️ 注意:从 macOS Catalina 开始,默认 Shell 是 zsh,但通过以上步骤可永久切换回 bash


    普通分类: