先说重点:Linux 默认自带 shell(bash),一般不需要 “安装”;我们做的通常是:安装其他 shell(zsh/fish)、切换默认 shell、配置环境变量、配置启动文件、提示符、别名。
一、先查看当前系统有哪些 Shell
# 查看系统已安装shell列表
cat /etc/shells
# 查看当前正在用的shell
echo $SHELL
# 查看shell版本
bash --version
zsh --version
常见内置:/bin/sh、/bin/bash、/usr/bin/zsh、/usr/bin/fish
二、安装新的 Shell(bash /zsh/fish)
1)安装 zsh(最常用,很多人替换 bash)
# Debian / Ubuntu
apt update && apt install -y zsh
# CentOS / Rocky / AlmaLinux
yum install -y zsh
# openEuler / 麒麟
yum install zsh
2)安装 fish(语法友好,适合新手)
apt install fish
# 或者 yum install fish
bash 几乎所有发行版预装;如果极简容器没有 bash(只有 sh):
apt install bash
# yum install bash
验证安装
which zsh
zsh --version
三、切换默认 Shell(重点)
⚠️ 必须是
/etc/shells里面存在的路径,否则 chsh 报错
# 方式1:chsh(推荐,需要输入当前用户密码)
chsh -s /usr/bin/zsh
# 方式2:直接修改 /etc/passwd(不推荐新手,改错会无法登录)
# usermod -s /usr/bin/zsh username
切换完重新登录 ssh 或者重新开终端才生效!
切回 bash:
chsh -s /bin/bash
临时切换(只在当前终端生效,重启终端失效):直接输入 zsh / bash / fish
四、Shell 配置文件(bash 和 zsh 不一样,这个最容易混淆)
Shell 分 交互式登录 shell / 交互式非登录 shell,加载文件顺序不同
✅ Bash 配置文件
日常改别名、代理、PATH,一般改~/.bashrc 改完生效:
source ~/.bashrc
✅ Zsh 配置文件
生效:
source ~/.zshrc
✅ Fish
fish 配置:~/.config/fish/config.fish
五、常用配置示例(直接复制到 .bashrc/.zshrc)
# 1. 别名
alias ll='ls -alh'
alias la='ls -A'
alias l='ls'
alias grep='grep --color=auto'
# 2. PATH 追加(自己的脚本目录)
export PATH="$HOME/bin:/usr/local/bin:$PATH"
# 3. 自定义提示符 PS1(bash)
export PS1="\[\033[32m\]\u@\h \[\033[34m\]\w\[\033[0m\] \$ "
# 4. 历史记录优化
export HISTSIZE=5000
export HISTFILESIZE=10000
export HISTCONTROL=ignoredups # 忽略重复命令
zsh 很多人用 oh-my-zsh,下面单独说
六、Oh My Zsh(zsh 增强框架,工业界非常流行)
# 安装
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
安装后自动写入 ~/.zshrc,自带主题、插件。
常用插件(在.zshrc 的 plugins 里开启)
git docker kubectl sudo autojump
改主题:ZSH_THEME="robbyrussell"
坑:国内 curl 拉取慢,可以换 gitee 镜像版本
七、全局配置(所有用户生效)
不要改家目录文件,修改下面:
bash:
/etc/bash.bashrczsh:
/etc/zsh/zshrc适合统一给服务器所有用户设置代理、PATH、别名
八、排查常见问题
chsh: invalid shell原因:路径不在
/etc/shells,用which zsh拿到正确路径,确认写入 /etc/shells
source 之后没问题,重新登录失效
登录 shell 和非登录 shell 加载文件不同,不要混淆
.bashrc和.bash_profile
改完默认 shell ssh 连不上
不要随便写不存在的 shell 路径;应急:
usermod -s /bin/bash root
容器环境(alpine):默认是 ash,没有 bash/zsh,需要 apk add bash zsh
九、推荐学习路线
先用系统自带 bash,熟悉~/.bashrc、PATH、alias、PS1
想更好体验 → 安装 zsh + oh-my-zsh
写脚本:脚本头部
#!/bin/bash固定用 bash(兼容性最强,不要写 #!/bin/sh)
本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。
原文链接
欢迎访问