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

有帮助吗?

解决方案

这些适用于 MacOS Sierra 10.12.5 (16F73) 以及可能其他一些最近和即将推出的 MacOS 版本。

  1. chsh 仅仅更改默认 shell 是不够的。确保按下 命令+, 当您的终端打开时,将“Shells open with”选项更改为“Default Login shell”。

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

其他提示

<强> 1。须藤纳米/ etc / shells中 “在这里输入的图像描述”

<强> 2。添加在/ usr / local / bin目录/鱼的炮弹列表 “在这里输入的图像描述”

第3。 CHSH -s的/ usr / local / bin中/鱼

从航站楼出发:

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

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. 将 Fish 设置为默认 shell chsh:

    chsh -s /usr/local/bin/fish
    

从系统偏好设置:

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

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

    login shell

  3. 按确定,注销并重新登录

下面是另一种方式来做到这一点:

假设你与MacPorts的,这可以通过执行来进行安装它:

sudo port install fish

您壳将位于/opt/local/bin/fish

您需要告诉OSX,这是一个有效的外壳。为了做到这一点,这条路径添加到/etc/shells文件的末尾。

一旦你做到了这一点,您可以进入系统预置更换的外壳 - >帐户。单击锁定允许改变。账户上单击鼠标右键,并选择“高级选项...”。在“登录shell”领域,路径添加到鱼。

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

  1. 首先我必须将鱼添加到 /etc/shells 文件

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

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

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

在MACOS莫哈韦我不得不做以下(使用的zsh作为示例):

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)
  1. 打开你的终端并按 命令+, (逗号)。这将打开一个首选项窗口。
  2. 第一个选项卡是“常规”。
  3. 找到“Shells open with”设置并选择第二个选项,该选项需要 shell 的完整路径。
  4. 将链接粘贴到您的fish命令,通常是 /usr/local/bin/fish.

我正在使用 macOS Sierra。

chsh程序将让你改变默认的shell。这将需要的完整路径可执行文件,所以如果你的shell是fish那么它会要你提供当你键入which fish给出的输出。

您会看到一个开头的行“Shell:”。如果你从来没有编辑过它,它最有可能说“Shell: /bin/bash”。替换为所需壳与所述路径/bin/bash路径。

当在终端中,利用打开终端偏好命令 +

在设置选项卡中选择的主题之一,并选择在右侧壳标签。

可以设置自动启动命令fish

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写入命令)。

如何获取最新版本的bash的现代的MacOS(在莫哈韦进行测试)。

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

然后你就可以获得vim的风格标签完成这是只有在庆典> = 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"

在情况下,您有其他方面的烦恼,工作在Mac莫哈韦但一般应该工作。

which fish
“登录壳:”

添加的输出路径到“系统预置>用户和组>右击用户,高级选项”的结果从该入粘贴

这对我在全新安装的 mac osx (sierra) 上有用:

  1. 将当前用户定义为 shell 的所有者
sudo chown $(whoami) /etc/shells
  1. 将 Fish 添加到 /etc/shells
sudo echo /usr/local/bin/fish >> /etc/shells
  1. 使用 chsh 将 Fish 设置为默认 shell
chsh -s /usr/local/bin/fish
  1. 将 root 重新定义为 shell 的所有者
sudo chown root /etc/shells
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top