218

我不喜欢fish每次启动终端时都重新输入。我希望默认启用Fish。如何将 Fish shell 设置为 Mac 上的默认 shell?

4

18 回答 18

265

1. 须藤纳米 /etc/shells 在此处输入图像描述

2. 将 /usr/local/bin/fish 添加到你的 shell 列表中 在此处输入图像描述

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

于 2014-10-12T02:06:47.753 回答
88

从终端:

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

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

    chsh -s /usr/local/bin/fish
    

从系统偏好设置:

  1. 用户和组→ ctrl-单击当前用户→ 高级选项...

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

    登录外壳

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

于 2013-12-10T22:11:02.140 回答
81

您可以使用chsh更改用户的 shell。

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

chsh -s /bin/zsh

如手册页和 Lorin 所述,如果操作系统不知道 shell,则必须将其添加到其已知列表中:/etc/shells.

于 2009-01-17T12:48:48.140 回答
39

这些适用于 macOS v10.12.5 (Sierra) (16F73) 以及可能其他一些最近和即将发布的 macOS 版本。

  1. chsh更改默认 shell 是不够的。确保在您的终端打开时按Command+ ,,并将“Shell 打开方式”选项更改为“默认登录 shell”。

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

于 2017-07-15T15:29:07.187 回答
20

这是另一种方法:

假设您使用MacPorts安装它,可以通过以下方式完成:

sudo port install fish

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

你需要告诉 OS X 这是一个有效的 shell。为此,请将此路径添加到/etc/shells文件末尾。

完成此操作后,您可以通过转到System PreferencesAccounts来更改 shell 。单击锁定以允许更改。右键单击该帐户,然后选择“高级选项...”。在“登录 shell”字段中,添加 Fish 的路径。

于 2010-01-10T15:27:05.853 回答
13

Terminal.appPreferencesGeneralShells open with/bin/fish

  1. 打开终端并按command+ ,(逗号)。这将打开一个首选项窗口。
  2. 第一个选项卡是“常规”。
  3. 找到'Shells open with'设置并选择需要完整路径的第二个选项到shell。
  4. 将链接粘贴到您的 fish 命令,通常是/usr/local/bin/fish

请参阅此屏幕截图,其中zsh设置为默认值。

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

我正在使用macOS v10.12 (Sierra)。它也适用于macOS v10.14 (Mojave)。

于 2017-01-03T18:26:02.653 回答
12

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

  1. 首先,我必须将 Fish 可执行文件的路径添加到/etc/shells文件中

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

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

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

于 2014-06-05T22:22:11.413 回答
8

macOS v10.14 (Mojave) 上,我必须执行以下操作(以Z shell ( zsh) 为例):

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)
于 2018-09-28T11:22:55.743 回答
7

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

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

然后你准备好获得 Vim 风格的选项卡完成,它只在 Bash >= 4 上可用(Homebrew中的当前版本是 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"
于 2019-03-05T20:35:17.237 回答
6

这对我来说适用于全新安装Mac OS X v10.12 (Sierra):

  1. 将当前用户定义为 shell 的所有者

    sudo chown $(whoami) /etc/shells
    
  2. 将 Fish 添加到文件/etc/shells

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  3. 使用chsh使Fish成为您的默认 shell

    chsh -s /usr/local/bin/fish
    
  4. 将root重新定义为shell的所有者

    sudo chown root /etc/shells
    
于 2019-07-11T18:04:08.020 回答
4

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

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

于 2009-01-17T12:28:04.017 回答
4

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

在常规选项卡上,Shells open with:从更改Default login shellCommand:并使用/bin/fish

于 2012-01-23T15:36:27.547 回答
2

使用dscl

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 >

只需更改该值(使用中的写入命令dscl)。

于 2009-01-17T12:30:11.127 回答
2

如果您在使用其他方式时遇到问题,以下方法适用于macOS v10.14 (Mojave),但通常应该可以。

which fish

将输出路径添加到System PreferencesUsers & Groups → 右键单击​​ userAdvanced Options。将结果粘贴which到归档的"Login shell:"中。

于 2018-10-11T11:21:43.350 回答
2

M1 Mac上的Homebrew/opt/homebrew应该使用而不是/usr/local.

您可以检查的位置which fish。对我来说,Fish 是/opt/homebrew/bin/fish我添加到的位置etc/shells

于 2021-03-27T10:04:12.060 回答
2
  • 输入fish检查是否安装正确,如果安装正确,输入exit
  • 输入which fish,复制路径。
  • 类型sudo sh -c 'echo <your-fish-path-here> >> /etc/shells'
  • 重启你的终端
  • 类型chsh -s <your-fish-path-here>
  • 再次重启终端
  • 它现在应该可以工作了。
于 2021-12-15T12:20:07.797 回答
1

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

chsh -s <name-of-shell>

您可以选择的 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
于 2020-05-19T19:01:28.647 回答
0

编辑文件.zshrc并将其更改为

exec /bin/bash

或者你可能喜欢的任何外壳。

奖励:这不需要 root 访问权限,并且适用于 OS X 的每个版本。

唯一的问题是它不会以这种方式读取文件.bash_profile;只有当 Bash 作为交互式登录 shell 运行时才会读取它。您必须使用以下内容从文件.bashrc中包含它:

if [[ "$OSTYPE" == "darwin"* ]]; then
    #local hack on osx.
    if [[ -f $HOME/.bash_profile ]]; then
      . $HOME/.bash_profile
    fi
fi

另外: osx 附带的 bash 版本有点过时,最好安装最新版本的 bash brew install bash;在这种情况下,您的 .zshrc 文件应该运行正确的 bash 版本。目前是

exec /usr/local/Cellar/bash/5.1.8/bin/bash

于 2021-01-14T01:27:46.870 回答