在 MacOS Catalina 上将 zsh 用作默认 Shell

在 MacOS Catalina 上将 zsh 用作默认 Shell

从 macOS Catalina 版开始,Mac 将使用 zsh 作为默认登录 Shell 和交互式 Shell。

默认情况下, Mac 使用 zsh 或 bash 作为登录 Shell 和交互式 Shell 的命令行解释器:

  • 从 macOS Catalina 版开始,zsh (Z shell) 是所有新建用户帐户的默认 Shell。
  • bashmacOS Mojave 及更低版本中的默认 Shell。

zsh 与 Bourne Shell (sh) 高度兼容,并且与 bash 基本兼容,但存在一些差别。要进一步了解 zsh 及其全面的命令行完成系统,请在“终端”中输入 man zsh

如何更改默认 Shell

无论您的用户帐户是配置为使用 zsh(推荐)、bash 还是其他 Shell,您都可以从“用户与群组”偏好设置或命令行中更改默认 Shell。

从“用户与群组”偏好设置中更改

  1. 选取苹果菜单  >“系统偏好设置”,然后点按“用户与群组”。
  2. 点按锁形图标 img,然后输入您的帐户名称和密码。
  3. 在左侧的用户列表中,按住 Control 键点按您的用户名,然后选取“高级选项”。
  4. 从“登录 Shell”菜单中选取一个 Shell,然后点按“好”以存储更改。
    在这里插入图片描述

从命令行中更改

在“终端”中,输入 $ chsh -s path,其中的 path 是 /etc/shells 中列出的某个 Shell 路径,例如 /bin/zsh、/bin/bash、/bin/csh、/bin/dash、/bin/ksh、/bin/sh 或 /bin/tcsh。

如何在不更改默认 Shell 的情况下使用其他 Shell

如果您不希望“终端”在新的“终端”窗口和标签页中使用默认的登录 Shell,请按照以下步骤操作:

  1. 打开“终端”,然后选取“终端”>“偏好设置”。
  2. 从“通用”面板中,选择“命令(完整的路径)”。
  3. 在提供的栏位中,输入 /etc/shells 中列出的某个 Shell 路径,例如 /bin/zsh、/bin/bash、/bin/csh、/bin/dash、/bin/ksh、/bin/sh 或 /bin/tcsh。

在这里插入图片描述

如果您调用 bash Shell,而 macOS Catalina 已配置为使用另一个 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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小沈曰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值