如何更改 OSX 中的用户默认 shell?

Dav*_*olm 36 shell macos

更改用户默认 shell 的正确 OSX 方法是什么?当我用谷歌搜索它时,我发现了几个对名为 NetInfo Manager 的应用程序的引用,但我在我的系统上找不到它。还有对名为 niutil 的命令行版本的引用,我也没有找到。

Cho*_*er3 54

对于 <=10.4 - 网络信息管理器,/users/whoever/shell

>=10.5

  1. 转到系统偏好设置 -> 帐户
  2. 单击锁定图标以解锁首选项窗格
  3. 右键单击(或按住 Control 单击)用户并选择“高级选项”
  4. 编辑登录外壳字段

  • 哇,在使用 OS XI 8 年后不知道用户首选项中的控件单击:我想这是在 10.5 中添加的,尽管正如您所指出的。+1 (5认同)
  • 它不再适用于 el Capitan? (2认同)

chu*_*rnd 36

sudo chsh -s /path/to/shell username
Run Code Online (Sandbox Code Playgroud)

其中 shell 是您想要的那个用户。sudo如果您知道username的密码,则不需要。

man chsh
Run Code Online (Sandbox Code Playgroud)

更多例子。

  • 你也可以只运行 `chsh` 并更改 shell 字段。如果你得到类似 `chsh: /usr/local/bin/bash: non-standard shell` 的错误,把 `/usr/local/bin/bash` 添加到 `/etc/shells`。 (4认同)
  • 也许在 10.9 中发生了一些变化,但是这个命令现在会抛出一条使用消息。现在似乎正确的语法是`chsh -s /path/to/shell username` (3认同)

Che*_*ion 10

NetInfo 已被目录服务 (dscl) 取代,并且可以注意到 Mac OS X 的默认 shell 自 10.3 以来一直是 bash。在此之前,它是 tcsh。

如果您需要从命令行执行此操作(例如,通过 ARD 推送或通过 SSH 远程推送),您可以运行:

sudo dscl localhost -change /Local/Default/Users/USERNAME shell OLD_SHELL NEW_SHELL
#In Use:
sudo dscl localhost -change /Local/Default/Users/chealion shell /bin/bash /bin/zsh
Run Code Online (Sandbox Code Playgroud)

如果您不确定当前的 shell,您可以运行:

sudo dscl localhost -read /Local/Default/Users/USERNAME shell
Run Code Online (Sandbox Code Playgroud)

如果用户不是本地用户,路径将简单地更改,如有必要,您可以更改localhost为 Open Directory Server 的名称。(假设它运行 10.5)。

信息存储在 .plist (xml) 中/private/var/db/dslocal/- 但是您不想手动编辑 plist 文件。


小智 8

对于 10.10:

shell但是UserShell

sudo dscl localhost -change /Local/Default/Users/USERNAME UserShell /bin/bash /bin/ksh
Run Code Online (Sandbox Code Playgroud)