在 Mac 上将 zsh 用作默认 Shell
在 Mac 上将 zsh 用作默认 Shell
从 macOS Catalina 开始,Mac 使用 zsh 作为默认登录 Shell 和交互式 Shell。你还可以在较早版本的 macOS 中将 zsh 设置为默认 Shell。
默认情况下,Mac 使用 zsh 或 bash 作为登录 Shell 和交互式 Shell 的命令行解释器:
- 从 macOS Catalina 开始, zsh (Z shell) 是所有新建用户帐户的默认 Shell。
- bash 是 macOS Mojave 及更早版本 中的默认 Shell。
zsh 与 Bourne Shell (sh) 高度兼容,并且与 bash 基本兼容(存在一些差别)。要进一步了解 zsh 及其全面的命令行完成系统,请在“终端”中输入 man zsh
。
如何更改默认 Shell
无论你的用户帐户是配置为使用 zsh(推荐)、bash 还是其他 Shell,你都可以从命令行或“用户与群组”设置更改默认 Shell。
从命令行更改
在“终端”中,输入 $ chsh -s path
,其中的 path 是 /etc/shells 中列出的某个 Shell 路径,例如 /bin/zsh、/bin/bash、/bin/csh、/bin/dash、/bin/ksh、/bin/sh 或 /bin/tcsh。
从“用户与群组”设置中更改
在 macOS Ventura 或更高版本中:
- 选取苹果菜单 >“系统设置”,然后点按边栏中的“用户与群组”。
- 在右侧用户列表中,按住 Control 键点按你的用户名或用户图片,然后选取“高级选项”。
- 系统提示你输入用户名和密码时,请输入相应信息。
- 从“登录 shell”菜单中选取一个 Shell,然后点按“好”以存储更改。
在较早版本的 macOS 中:
- 选取苹果菜单 >“系统偏好设置”,然后点按“用户与群组”。
- 点按锁形图标 ,然后输入你的用户名和密码。
- 在左侧的用户列表中,按住 Control 键点按你的用户名,然后选取“高级选项”。
- 从“登录 shell”菜单中选取一个 Shell,然后点按“好”以存储更改。
如何在不更改默认 Shell 的情况下使用其他 Shell
如果你不希望“终端”在新的“终端”窗口和标签页中使用默认的登录 Shell,请按照以下步骤操作:
- 打开“终端”,然后选取“终端”>“设置”(或“偏好设置”)。
- 从“通用”面板中,选择“命令(完整的路径)”。
- 在相邻栏位中,输入 /etc/shells 中列出的某个 Shell 路径,例如 /bin/zsh、/bin/bash、/bin/csh、/bin/dash、/bin/ksh、/bin/sh 或 /bin/tcsh。
如果你调用 bash Shell,而 macOS 已配置为使用另一个 Shell,则你将看到一条信息,提示默认的交互式 Shell 现在是 zsh。要消除这个警告,你可以将以下命令添加到 ~/.bash_profile 或 ~/.profile 中:
export BASH_SILENCE_DEPRECATION_WARNING=1
如何切换到 zsh 描述文件和提示符
如果你正在使用 bash 描述文件(例如,为了设置环境变量、别名或路径变量),则你应改为使用作用与它相同的 zsh 描述文件。例如:
- .zprofile 的作用与 .bash_profile 相同,并且在登录时运行(包括通过 SSH 运行)
- .zshrc 的作用与 .bashrc 相同,并针对每个新的“终端”会话运行
如果你正在使用 .profile(一个兼容 POSIX 的描述文件),则你可以将以下命令添加到 .zprofile,以便 zsh 自动读取这个描述文件的设置:
[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
另外,你无需进行任何修改,就可以将 bash 描述文件中的某些设置转移到 zsh 描述文件。例如,要设置环境变量,你可以使用以下命令: export MY_SETTING=1
。
zsh 能够识别一组不同于 bash 所能识别的提示符指定符,并且用于指定彩色输出的语法更简洁,让你无需使用复杂的 ANSI 转义序列。例如,下面显示了 .bash_profile 中默认 bash 提示符的语法:
export PS1="\[\e[92;40m\]\h\[\e[m\]:\[\e[93m\]\W\[\e[m\] \\$ "
要在使用 .zprofile 或 .zshrc 时将这个 prompt 提示符转换为 zsh 提示符,请使用以下命令:
export PS1="%10F%m%f:%11F%1~%f \$ "
请参阅 zsh man 页面,以了解更多详细信息。
如何测试 Shell 脚本
要在 macOS Catalina 或更高版本中使用与 Bourne 兼容的 Shell 来测试脚本兼容性,你可以将 /var/select/sh 更改为 /bin/bash、/bin/dash 或 /bin/zsh。如果你将 /var/select/sh 更改为 bash 之外的 Shell,请注意,使用 bashisms 的脚本可能无法正常工作。
你可以运行命令 zsh --emulate sh
来让 zsh 模拟 sh。
有关非 Apple 制造的产品或非 Apple 控制或测试的独立网站的信息仅供参考,不代表 Apple 的任何建议或保证。Apple 对于第三方网站或产品的选择、性能或使用不承担任何责任。Apple 对于第三方网站的准确性和可靠性不作任何担保。 联系供应商 以了解其他信息。
发布日期:2022 年 11 月 07 日
关于iterm2闪退的问题
用 brew 升级zsh之后,打开iterm2总是闪退,需要用上面的方法设置zsh
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦