如何在Mac上设置默认外壳?


Answers:


31

这些适用于MacOS Sierra 10.12.5(16F73)以及其他一些即将发布的MacOS版本。

  1. chsh不足以更改默认外壳。确保在终端打开时按Command+ ,,然后将“打开的外壳”选项更改为“默认登录外壳”。

  2. 如果是bash,请确保执行echo $BASH_VERSION以确认您正在运行预期的bash版本。bash --version没有给您正确的信息。


3
由于此答案是公认的答案,因此,也许不是使它成为其他答案的附录,也可以使其成为包含附录的完整答案。
杰森·库姆斯

现在在文档中对此进行了回答。
reergymerej

@ JasonR.Coombs完成。
Tushar Vazirani '18年

1
更新:我们现在可以设置默认的shell中PreferencesTerminal.app。参见Pankaj的答案
罗勒·布尔克

我已经提到了键盘快捷键的首选项。
Tushar Vazirani '19年

241

1.须藤nano / etc / shells 在此处输入图片说明

2.将/ usr / local / bin / fish添加到您的Shell列表中 在此处输入图片说明

3. chsh -s / usr / local / bin / fish


2
并且您应该更改Shell open with: Default login shellTerminal.app的设置
Tikhonov Alexander

77

您可以使用chsh更改用户的外壳程序。

例如,运行以下代码,将您的shell更改为Zsh

chsh -s /bin/zsh

如手册所述,Lorin对此进行了说明,如果OS不知道该外壳,则必须将其添加到其已知列表中:/etc/shells


13
试图得到chsh: /usr/local/bin/fish: non-standard shell 解决方案是按照下面的@ lorin-hochstein答案所述将其添加到/ etc / shells
lmsurprenant

dbright @ PowerMac:〜$ chsh -s / Users / dbright / sys / bin / bash更改dbright的shell。dbright的密码:chsh:/ Users / dbright / sys / bin / bash:非标准shell dbright @ PowerMac:〜$ ls -l / etc / shells -rw-r--r-- 1个根轮179 Sep 23 2007 / etc / shells
不要

哼,我最近尝试过chsh,它以简单的用户身份工作(-s尽管没有)。我会尽快重试。
Aif

73

从终端:

  1. 将Fish添加到/etc/shells,这将需要管理密码:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. 使用以下命令将Fish设置为默认外壳chsh

    chsh -s /usr/local/bin/fish
    

在系统偏好设置中:

  1. 用户和组→按住Ctrl键单击“当前用户”→“高级选项...”。

  2. 将登录shell更改为 /usr/local/bin/fish

    登录外壳

  3. 按确定,注销然后再次登录


8
必须对步骤1做些微调整sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
。-– purpletonic

@purpletonic提到的做同样事情的另一种方式echo /usr/local/bin/fish | sudo tee -a /etc/shells
mroach

20

这是另一种方法:

假设您使用MacPorts安装了它,可以通过执行以下操作:

sudo port install fish

您的外壳将位于中/opt/local/bin/fish

您需要告诉OSX这是有效的shell。为此,将此路径添加到/etc/shells文件末尾。

完成此操作后,可以通过转到系统偏好设置->帐户来更改外壳。单击锁定以允许更改。右键单击该帐户,然后选择“高级选项...”。在“登录外壳”字段中,添加钓鱼路径。


谢谢!这很好用,并且使鱼成为我在任何地方的默认终端。只是像其他答案之一那样在终端中进行更改,使终端每次我关闭一个窗口时都会提示我,而chsh却对我不起作用。
jasongregori 2012年

12

对我唯一有用的是所有这些方法的组合。

  1. 首先,我必须在/etc/shells文件中添加鱼

  2. 然后我跑了 chsh -s /usr/local/bin/fish

  3. 最后,我输入Command+ ,并添加/usr/local/bin/fish到默认路径

只有当我完成所有三件事之后,鱼才开始弹出,作为新终端窗口的默认值。



8

Terminal.app > Preferences> General> Shells open with:>/bin/fish

  1. 打开您的终端,然后按command+,(逗号)。这将打开一个首选项窗口。
  2. 第一个标签是“常规”。
  3. 找到“打开的外壳”设置,然后选择第二个选项,该选项需要完整的外壳路径。
  4. 将链接粘贴到您的fish命令(通常为)/usr/local/bin/fish

请参阅此屏幕快照,该屏幕快照zsh已设置为默认屏幕截图。

在Terminal.app首选项中输入<code> / bin / zsh </ code>的屏幕截图

我正在使用macOS Sierra。也可以在macOS Mojave中使用


2
最后!适用于非sudo用户的解决方案!
EBE艾萨克


5

如何在现代macOS上获取最新版本的bash(在Mojave上测试)。

brew install bash
which bash | sudo tee -a /etc/shells
chsh -s $(which bash)

然后,您准备好完成vim样式的制表符补全,仅在bash> = 4上可用(当前版本brew为5.0.2)。

# If there are multiple matches for completion, Tab should cycle through them
bind 'TAB':menu-complete

# Display a list of the matching files
bind "set show-all-if-ambiguous on"

# Perform partial completion on the first Tab press,
# only start cycling full results on the second Tab press
bind "set menu-complete-display-prefix on"

4

chsh程序将允许您更改默认外壳。它将需要可执行文件的完整路径,因此,如果您的shell是fish,它将希望您提供键入时提供的输出which fish

您会看到以“ Shell:” 开头的行。如果您从未编辑过,它很可能会显示“ Shell: /bin/bash”。将该/bin/bash路径替换为所需外壳程序的路径。


4

在终端中时,使用Command+ 打开终端首选项,

在“设置”选项卡上,选择一个主题,然后在右侧选择“外壳”选项卡。

您可以设置自动启动命令fish


4

这项工作对我来说是全新安装Mac osx(Sierra):

  1. 将当前用户定义为外壳所有者
sudo chown $(whoami) /etc/shells
  1. 将鱼添加到/ etc / shells
sudo echo /usr/local/bin/fish >> /etc/shells
  1. 使用chsh将Fish设置为默认外壳
chsh -s /usr/local/bin/fish
  1. 将root重新定义为shell的所有者
sudo chown root /etc/shells

2
heimdall:~ leeg$ dscl
Entering interactive mode... (type "help" for commands)
 > cd /Local/Default/Users/
/Local/Default/Users > read <<YOUR_USER>>
[...]
UserShell: /bin/bash
/Local/Default/Users >

只需更改该值即可(使用中的write命令dscl)。


当我运行读leeg我得到这个错误:<dscl_cmd> DS错误:-14136(eDSRecordNotFound)
莱奥列奥波尔德·赫兹준 영

1
是。那是因为leeg是我的用户名,而不是您的用户名:P

0

如果您在使用其他方法时遇到麻烦,请在mac Mojave上工作,但通常应该可以。

which fish

将输出路径添加到“系统偏好设置>用户和组>右键单击用户,高级选项”,将结果粘贴到“登录外壳程序:”


0

要在Mac上更改默认Shell,请运行以下命令:

chsh -s <name-of-shell>

您可以选择的外壳列表为:

  1. / bin / bash
  2. / bin / csh
  3. / bin /破折号
  4. / bin / ksh
  5. / bin / sh
  6. / bin / tcsh
  7. / bin / zsh

因此,如果您想从/ bin / zsh shell更改为,则命令将如下所示:

chsh -s /bin/zsh

您可以通过运行以下命令查看系统上所有可用的shell:

cat /etc/shells
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.