我不喜欢fish
每次启动终端时都重新输入。我希望默认启用Fish。如何将 Fish shell 设置为 Mac 上的默认 shell?
18 回答
1. 须藤纳米 /etc/shells
2. 将 /usr/local/bin/fish 添加到你的 shell 列表中
3. chsh -s /usr/local/bin/fish
从终端:
将 Fish 添加到
/etc/shells
,这将需要管理密码:sudo echo /usr/local/bin/fish >> /etc/shells
使用以下命令将 Fish 设为默认 shell
chsh
:chsh -s /usr/local/bin/fish
从系统偏好设置:
用户和组→ ctrl-单击当前用户→ 高级选项...
将登录外壳更改为
/usr/local/bin/fish
按确定,注销并再次登录
您可以使用chsh更改用户的 shell。
例如,运行以下代码以将您的 shell 更改为 Zsh
chsh -s /bin/zsh
如手册页和 Lorin 所述,如果操作系统不知道 shell,则必须将其添加到其已知列表中:/etc/shells
.
这些适用于 macOS v10.12.5 (Sierra) (16F73) 以及可能其他一些最近和即将发布的 macOS 版本。
chsh
更改默认 shell 是不够的。确保在您的终端打开时按Command+ ,,并将“Shell 打开方式”选项更改为“默认登录 shell”。如果是 Bash,请确保执行
echo $BASH_VERSION
以确认您正在运行预期版本的 Bash。bash --version
没有给你正确的信息。
这是另一种方法:
假设您使用MacPorts安装它,可以通过以下方式完成:
sudo port install fish
您的外壳将位于/opt/local/bin/fish
.
你需要告诉 OS X 这是一个有效的 shell。为此,请将此路径添加到/etc/shells
文件末尾。
完成此操作后,您可以通过转到System Preferences → Accounts来更改 shell 。单击锁定以允许更改。右键单击该帐户,然后选择“高级选项...”。在“登录 shell”字段中,添加 Fish 的路径。
Terminal.app → Preferences → General → Shells open with → /bin/fish
- 打开终端并按command+ ,(逗号)。这将打开一个首选项窗口。
- 第一个选项卡是“常规”。
- 找到'Shells open with'设置并选择需要完整路径的第二个选项到shell。
- 将链接粘贴到您的 fish 命令,通常是/usr/local/bin/fish。
请参阅此屏幕截图,其中zsh
设置为默认值。
我正在使用macOS v10.12 (Sierra)。它也适用于macOS v10.14 (Mojave)。
唯一对我有用的是所有这些方法的组合。
首先,我必须将 Fish 可执行文件的路径添加到
/etc/shells
文件中然后我跑了
chsh -s /usr/local/bin/fish
最后,我输入Command+,并添加
/usr/local/bin/fish
到那里的默认路径
只有在我完成所有三件事之后,Fish 才开始作为新终端窗口的默认值弹出。
在macOS v10.14 (Mojave) 上,我必须执行以下操作(以Z shell ( zsh
) 为例):
brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)
如何在现代 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"
这对我来说适用于全新安装Mac OS X v10.12 (Sierra):
该chsh
程序将允许您更改默认外壳。它将需要可执行文件的完整路径,因此如果您的 shell 是 Fish,那么它将希望您提供键入时给出的输出which fish
。
您将看到以“”开头的行Shell:
。如果您从未编辑过它,它很可能会显示“ Shell: /bin/bash
”。/bin/bash
将该路径替换为所需外壳的路径。
在 中时,使用+Terminal
打开终端首选项。Command,
在常规选项卡上,Shells open with
:从更改Default login shell
为Command
:并使用/bin/fish
使用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
)。
如果您在使用其他方式时遇到问题,以下方法适用于macOS v10.14 (Mojave),但通常应该可以。
which fish
将输出路径添加到System Preferences → Users & Groups → 右键单击 user,Advanced Options。将结果粘贴which
到归档的"Login shell:"中。
- 输入
fish
检查是否安装正确,如果安装正确,输入exit
- 输入
which fish
,复制路径。 - 类型
sudo sh -c 'echo <your-fish-path-here> >> /etc/shells'
- 重启你的终端
- 类型
chsh -s <your-fish-path-here>
- 再次重启终端
- 它现在应该可以工作了。
要更改 Mac 上的默认 shell,请运行以下命令:
chsh -s <name-of-shell>
您可以选择的 shell 列表包括:
- /bin/bash
- /bin/csh
- /bin/破折号
- /bin/ksh
- /bin/sh
- /bin/tcsh
- /bin/zsh
因此,如果您想从/bin/zsh shell 更改,您的命令将如下所示:
chsh -s /bin/zsh
您可以通过运行以下命令查看系统上所有可用的 shell:
cat /etc/shells
编辑文件.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