如何在OSX中更改用户默认外壳程序?


Answers:


52

对于<= 10.4-netinfo管理器,/ users / whoever / shell

对于> = 10.5

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

5
哇,在使用OS XI八年后,对用户偏好中的控件单击一无所知:我猜这是在10.5中添加的,不过正如您所指出的那样。+1
jkp 2010年

1
Control-Click令人震惊!
Eonil'2

1
将我的帐户的shell从PATH中移出后的救星...无法启动终端通过命令行进行修复!
davemyron

2
在El Capitan上不再有效了吗?
MarcusJ '16

没错,这就是这种事情的问题,已经过去7年了,事情发生了变化-为什么不自己做研究,添加和回答,结果就会被否决,这就是事情的工作方式,而不是仅仅剪一些小答案。
斩波器

33
sudo chsh -s /path/to/shell username

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

man chsh

有关更多示例。


对于su的root也可以使用,在控制面板中不可见。我认为?
克里斯·卡罗尔

4
您也可以只运行chsh并更改shell字段。如果出现类似的错误chsh: /usr/local/bin/bash: non-standard shell,请添加/usr/local/bin/bash/etc/shells
Lri 2013年

3
也许在10.9中有所更改,但是此命令现在会引发用法消息。现在看来正确的语法是chsh -s /path/to/shell username
Matthematics 2014年

9

NetInfo已被目录服务(dscl)取代,并且可以注意到,因为10.3已成为bash,所以Mac OS X的默认外壳程序。在此之前是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

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

sudo dscl localhost -read /Local/Default/Users/USERNAME shell

如果用户不是本地用户,则路径将简单地更改,并且如果需要,您将更改为localhostOpen Directory Server的名称。(假设它运行10.5)。

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


7

对于10.10:

shell但是UserShell

sudo dscl localhost -change /Local/Default/Users/USERNAME UserShell /bin/bash /bin/ksh
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.