如何在 Mac OS X 中设置我的 shell?

nal*_*all 21 mac terminal shell macos

我知道我可以在终端首选项中设置“Shells open with”,但我很好奇是否有任何系统范围的设置方式(类似于在某些 Unix 中更新 /etc/passwd )。

Joh*_*n T 24

chsh像这样使用该实用程序:

chsh -s bash
Run Code Online (Sandbox Code Playgroud)

例如chsh,与chsh您在 Linux 中看到的相比,Apple在 Mac OS X 上发生了一些变化。您可以在chsh Mac OS X 手册页中阅读他们的内容。


Tel*_*hus 22

请注意,您将只被允许更改为/etc/shells. 这通常没问题,但这意味着如果您想安装 Bash 4(来自 Homebrew、MacPorts 或自己编译),您需要在 .bashrc 中添加一行/etc/shells。(几周前我遇到了这个,并认为它可能有助于其他人知道......)

编辑Tim Smith指出,/etc/shells如果您chsh以 root 身份通过sudo. 例如sudo chsh -s /usr/local/bin/my_shell $USER,即使my_shell未列在/etc/shells. 我更喜欢 edit /etc/shells,但最终,这是sudo两种方式的一种用途,因为您无法/etc/shells以普通用户的身份进行编辑。所以也许一个六个,另一个六个。


Che*_*ion 11

要使用 Mac OS X GUI 执行此操作:

  1. 打开“系统偏好设置”。
  2. 打开“帐户”/“用户和组”首选项窗格并解锁首选项窗格(如果适用)。
  3. 在您希望更改外壳control的用户上,+单击或右键单击该用户并选择“高级选项...”
  4. 在它说“登录外壳:”的地方将其更改为您希望使用的外壳。

值得注意的是,如果您对终端不满意,您可以在此位置更改主目录、UUID、用户 ID、组 ID 和短名称。还有一个类似的问题就设在这里为好。


phi*_*kov 5

使用上面的答案,我收到一条错误消息:

$ chsh -s zsh
Changing shell for myuser.
Password for myuser:
chsh: zsh: non-standard shell
Run Code Online (Sandbox Code Playgroud)

要解决此问题:

sudo chsh -s zsh $(whoami)
Run Code Online (Sandbox Code Playgroud)

whoami 在子shell中是为您的用户更改shell,而不是root。

如果您使用自制软件,还有一件事。当您以 root 身份(使用sudo)运行命令时,zsh 指向 /bin/zsh,它随 OSX 一起提供并且可能已过时。要使用通过自制软件安装的最新版本,请使用以下命令:

sudo chsh -s $(which zsh) $(whoami)
Run Code Online (Sandbox Code Playgroud)