如何在Mac OS X上将Login Shell从bash更改为zsh?


90

我正在尝试将Mac OS X的Login Shell从bash更改为zsh。我看到Mac OS X Leopard中有可能,但是对于OS X Lion我找不到方法。我真的希望可以将Login shell从bash更改为其他东西。我不确定在哪里寻找。


将shell更改为zsh之后,我仍然必须手动启动zsh。注销无济于事。然后,我将zsh更改为最新的登录shell。注销,就在那里。

1
如果没有其他问题,您可以随时修改.bashrc以查找并执行zsh。 if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi。提示,在修改外壳启动脚本时,请确保保持外壳运行并在另一个窗口中启动新的外壳-如果将其破坏,您仍然可以轻松地修复它。
Dan Pritts 2013年

Answers:


101

您可以通过以下命令更改用户外壳程序:

chsh -s /bin/zsh

注意:要针对非标准外壳对其进行更改,请确保其路径已添加到/etc/shells文件中。


4
我使用Homebrew安装了更新版本的zsh,将zsh放入/usr/local/bin/zsh。不幸的是,chsh不允许这样做chsh: /usr/local/bin/zsh: non-standard shell。在这种情况下,Daniel Beck的答案是一个合适的解决方案。
adam_0

43
如果您遇到非标准外壳的问题,我认为您应该可以添加它/usr/local/bin/zsh/etc/shells并且应该可以解决该问题。
Mike Meyers

13
自制的zsh安装信息实际上确实建议您将其添加到/ etc / shells: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells.
George

有时不起作用。@弗兰克的答案可以确保这一点
Oliverbarnes

1
@Awesome_girl默认情况下,/etc/shells由root(超级用户)拥有,并且只能由root用户写入。你可以,例如,使用sudo vi /etc/shells使用sudo小号 UPER ü SER )运行vi编辑编辑/etc/shells。我刚刚在我的系统上进行了测试,并确认它不受系统完整性保护的保护,因此您应该能够以root用户身份进行编辑,而无需跳过箍以禁用SIP。
传播

54

有趣的是,通过Sierra(10.12)在OS X Lion中仍然可以使用问题中链接的相同方法。唯一的区别是:首选项窗格名为Users&Groups而不是Accounts

  1. 打开“系统偏好设置”→“用户和组”。
  2. 除非锁定图标尚未解锁,否则请单击锁定图标并进行身份验证。
  3. 在用户名列表中,在上下文上单击用户(Control单击时按住键,或者在右手的两键鼠标上单击鼠标右键)。
  4. 在上下文菜单中,选择“高级选项...”。
  5. 在出现的工作表中选择“登录外壳”。

“高级选项”屏幕顶部的注释声称您必须重新启动才能使更改生效,但实际上您只需要注销并重新登录即可。

在此处输入图片说明


1
确认这可以在Mountain Lion中使用,以及可以自行安装(或安装Homebrew)的“非标准外壳”。
adam_0

2
确认仍可在10.10优胜美地使用。
ecnepsnai 2014年

4
右键单击用户名以打开包含“高级选项”的菜单。我花了几分钟才找到。
pdwalker 2014年

1
为什么要强迫某人离开现场以收集所有信息,然后才能做出答案?因此,如果有人做出相同的假设,即在这里而不是在这里和那里的答案,则发表评论。
pdwalker 2014年

1
@jvriesem实际上,确实如此。我的猜测是,你跳过第2步
丹尼尔·贝克

11

要么:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)

3
您能解释为什么这回答了问题吗?
克里斯·F(ChrisF)2012年

一定要运行此之后 brew install zsh
2014年

3
另外,请注意通过自制程序安装的zsh路径不同。我这样做的方式是:sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
metakermit

1
警告:如果不先检查zsh路径就复制/粘贴它,将会破坏外壳。按照metakermit所说的去做。
radixhound 2016年

1

如果有人想知道macOS Sierra上是否发生了同样的问题,并且以下命令允许我无问题地更改shell:

chpass -s /usr/local/bin/zsh

1
这将重复另一个答案,并且不添加任何新内容。除非您确实有新贡献,否则请不要发布答案。“ chfn和chsh是chpass的同义词。”
DavidPostill
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.