fish 自动补全工具
Fish(即 Friendly Interactive SHell)是一个现代化、用户友好的命令行 shell,它与传统的 shell(如 Bash 或 Zsh)相比,提供了一些增强功能和改进,旨在提高用户的命令行使用体验。Fish 是一种交互式的 shell,注重易用性和高效性,尤其适合那些不想花费太多时间去配置的用户。
1. 更新包管理器缓存
在安装任何新软件之前,建议更新包管理器的缓存。
Debian/Ubuntu 系列:
sudo apt updateCentOS/RHEL 系列:
sudo yum makecacheFedora:
sudo dnf makecache
2. 安装 Fish(根据你的发行版选择对应的命令)
Debian/Ubuntu
默认情况下,较新的 Ubuntu 和 Debian 版本的仓库中已经包含 fish。如果仍未找到,可以尝试添加 fish 的官方仓库。
添加 Fish 的官方仓库:
sudo apt-add-repository ppa:fish-shell/release-3 sudo apt update安装
fish:sudo apt install fish
CentOS/RHEL
CentOS 的默认仓库中可能没有 fish,你需要启用 EPEL(Extra Packages for Enterprise Linux)。
启用 EPEL 仓库:
sudo yum install epel-release安装
fish:sudo yum install fish
Fedora
在 Fedora 中,fish 通常已包含在默认仓库中。运行以下命令即可安装:
sudo dnf install fishArch Linux
Arch 系统可以直接通过 pacman 安装:
sudo pacman -S fish手动安装 Fish
如果你的系统中没有可用的仓库,你也可以通过源码安装 fish:
下载 Fish 源码:
git clone https://github.com/fish-shell/fish-shell.git cd fish-shell安装依赖:
Debian/Ubuntu:
sudo apt install build-essential cmake ncurses-devCentOS/RHEL:
sudo yum groupinstall "Development Tools" sudo yum install cmake ncurses-devel
构建并安装:
cmake . make sudo make install
3. 验证安装
安装完成后,运行以下命令验证 fish 是否已安装成功:
fish --version如果输出类似以下内容,则安装成功:
fish, version 3.x.x4. 切换到 Fish
安装完成后,可以将 fish 设置为默认 Shell:
chsh -s /usr/bin/fish- Centos 为
lchsh -s /usr/bin/fish将 Fish Shell 设置为系统的 SSH 默认 Shell
要将 Fish Shell 设置为系统的 SSH 默认 Shell,可以按照以下步骤进行操作:
1. 确保 Fish 已正确安装
确认 Fish Shell 已安装并可以正常运行:
fish --version如果没有安装 Fish,请先安装它(参考前面的安装方法)。
2. 设置 Fish 为默认 Shell
查看 Fish 的路径
运行以下命令,获取 Fish 的绝对路径:
which fish通常输出会是 /usr/bin/fish 或 /usr/local/bin/fish。
将 Fish 添加到合法的 Shell 列表
打开
/etc/shells文件:sudo nano /etc/shells确保 Fish 的路径(如
/usr/bin/fish)在该文件中。如果没有,手动添加这一行:/usr/bin/fish
设置当前用户的默认 Shell 为 Fish
运行以下命令:
chsh -s /usr/bin/fish- Centos 为
lchsh -s /usr/bin/fish这里 /usr/bin/fish 是上一步查到的路径。如果命令执行成功,则当前用户登录时默认进入 Fish Shell。
3. 配置 SSH 使用 Fish Shell
当通过 SSH 登录时,系统会加载用户的默认 Shell(由 chsh 设置)。为了确认 SSH 登录会加载 Fish,可以通过以下步骤测试。
测试 SSH 登录
通过 SSH 登录本机或其他服务器:
ssh username@hostname登录后,运行以下命令,确认是否进入了 Fish:
echo $SHELL如果输出是
/usr/bin/fish,说明 Fish 已成功作为默认 Shell。
4. 为特定用户启用 Fish Shell
如果你只想为某些用户启用 Fish,而不影响系统其他用户,可以编辑这些用户的登录 Shell:
修改特定用户的 Shell:
sudo usermod --shell /usr/bin/fish username确认修改: 查看用户信息,确保默认 Shell 已更新为 Fish:
cat /etc/passwd | grep username输出应该类似于:
username:x:1000:1000:User Name,,,:/home/username:/usr/bin/fish
5. 解决 SSH 的兼容性问题
某些情况下,SSH 会依赖于登录 Shell 来执行脚本。Fish Shell 的语法可能导致问题。以下是避免问题的方法:
确保兼容性
在
~/.config/fish/config.fish中添加以下内容:if status --is-interactive set -g fish_greeting end这样可以避免非交互式 SSH 会话出现问题。
如果你的服务器需要执行
/bin/bash的脚本,可以在必要时切换 Shell:bash或者为特定任务临时切换 Shell,修改相关脚本。
完成以上设置后,Fish Shell 应该已经成为系统默认 SSH 登录的 Shell。如果还有其他问题,随时可以告诉我!