在 Mac OS X 的网络账户中修改 shell(chsh)

在 Mac OS X 上,我们可以在 Users & Groups 设置中指定 Network Account Server 来开启网络账户的登录。但是,当我试图将网络账户的默认 shell 从 bash 修改为 zsh 的时候,出现了问题。

直接执行 chsh 命令,会在默认编辑器中打开下面的内容:

 1# Changing user information for rzeng.
 2# Use "passwd" to change the password.
 3##
 4# Open Directory: /Active Directory/XXXX/xxxx.com
 5##
 6Shell: /bin/bash
 7Full Name: Rong Zeng
 8Office Location:
 9Office Phone:
10Home Phone:

当编辑了 shell: 的值之后,保存会出现这样的提示:

chsh: Operation was denied because the current credentials do not have the appropriate privileges. Operation was denied because the current credentials do not have the appropriate privileges. chsh: no changes made

直接使用 sudo chsh -s /bin/zsh ,也会出现同样的提示。

根据 How do I change a users default shell in OSX? 提到的,按住 Ctrl 键单击 User & Groups 中显示的用户名称,会出现 Advanced Options... 选项,在其中可以设置默认的 shell。

但是,Network Account 没有 Advanced Options ,而其他用户都有。

最后,还是这个问答通过曲线救国的方式解决了问题: chsh doesn't change $SHELL

方法很简单,操作系统不是不让改么?那么就直接改应用程序!

我使用的是 iTerm.app 代替默认的 Terminal 。进行如下的设置即可让 iTerm.app 启动的时候自动启动 zsh。

  1. 点击 iTerm.app -> Preferences -> Profiles -> General -> Command
  2. 设置 Command: 的值为 /bin/zsh

其实,如果不怕麻烦,在启动 shell 之后,再敲入 zsh 回车也能达到同样的效果。

(全文完)