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

这里的技术是共享的

You are here

macOS查看切换当前用户和shell 有大用 有大大用

1. 查看和切换用户

  • 查看当前用户

# w           # whoami      # id -un 
    • 切换到用户user2

    su - user2
      • 切换到root

      sudo -i
      sudo -s

        2. 查看和切换shell

        • 查看当前shell(默认是/bin/bash)

        echo $SHELL
        
          • 切换到/bin/zsh(需要重启终端)       chsh 是 change shell 的意思    -s 是 switch 切换的意思

          chsh -s /bin/zsh
            • 切换到/bin/bash(需要重启终端)

            chsh -s /bin/bash

              3. 关于用户shell的profile

              加载顺序:

              # 系统级别
              /etc/profile
              /etc/paths 
              
              # 用户级别
              ~/.bash_profile 
              ~/.bash_login 
              ~/.profile 
              
              ~/.bashrc

                前两个是系统级别的环境变量,针对所有用户,后面四个带有~/用户级别的环境变量。

                前两个环境配置在系统启动时候就会加载。
                ~/.bash_profile~/.bash_login~/.profile依次加载,如果~/.bash_profile不存在,依次加载后面几个文件;如果~/.bash_profile文件存在,后面几个文件不会加载
                ~/.bashrc 是bash shell打开时候加载

                全局环境变量设置

                修改全局环境变量时候参考系统默认的环境变量配置格式。

                修改全局环境变量需要root权限。

                /etc/paths 全局建议修改这个文件
                /etc/profile 不建议修改这个文件,全局共有配置,用户登录时候都会加载该文件
                /etc/bashrc 一般在这个文件中添加系统级别的环境变量,全局共有配置,bash shell执行时候都会加载

                重新载入配置文件

                执行以下指令立即生效

                source <配置文件>
                #示例
                source .bash_profile

                  来自  https://blog.csdn.net/toopoo/article/details/104440678 



                  chsh -s /bin/bash 是永久生效的吗

                  是的,chsh -s /bin/bash 会将 默认 shell 永久更改为 Bash,但需要注意以下几点:


                  1. 生效条件

                  • 只在新的登录会话生效(已打开的终端窗口不会自动切换,需要重新登录或新开终端)。

                  • 默认 shell 是针对当前用户的,如果想恢复默认(Mac 通常是 zsh),可以运行:

                    bash
                    chsh -s /bin/zsh

                  2. Mac 新版本的特殊性

                  从 macOS Catalina (10.15) 开始,默认 shell 是 zsh。如果你运行 chsh -s /bin/bash,可能会看到警告:

                  chsh: Warning: /bin/bash is not listed in /etc/shells.
                  

                  这时,需要先确认 /bin/bash 是否在白名单中:

                  bash
                  # 检查是否在允许的 shells 列表 cat /etc/shells # 如果没有 /bin/bash,手动添加(需要管理员权限) sudo echo "/bin/bash" >> /etc/shells

                  3. 验证是否生效

                  bash
                  # 查看当前 shell(只对当前会话有效) echo $SHELL # 查看当前运行的 shell echo $0 # 新开终端后,默认 shell 会变

                  恢复默认(改回 zsh)

                  如果后悔了,可以直接改回去:

                  bash
                  chsh -s /bin/zsh

                  临时切换 Shell(无需永久更改)

                  如果只想偶尔用 Bash,不必修改默认 shell:

                  bash
                  # 临时进入 Bash bash # 退出返回 zsh exit

                  总结

                  ✅ 永久生效chsh -s /bin/bash 会永久更改用户默认 shell。
                  ⚠️ 注意事项

                  • 需要 /bin/bash 在 /etc/shells 中(Mac 可能需要手动添加)。

                  • 当前会话不会立即切换,需重启终端。
                    🔙 恢复方法chsh -s /bin/zsh



                  普通分类: