小易说IT 小易说IT

Linux Shell 安装与配置完整指南

先说重点: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 配置文件

文件

作用

/etc/profile

系统全局,所有用户登录加载

/etc/bash.bashrc

全局 bash 交互配置

~/.bash_profile

用户登录 shell

~/.bashrc

交互式终端(ssh、本地终端,最常用),别名、提示符、PATH 放这里

~/.bash_logout

退出时执行

日常改别名、代理、PATH,一般改~/.bashrc 改完生效:

source ~/.bashrc

✅ Zsh 配置文件

文件

作用

/etc/zsh/zprofile

全局登录

/etc/zsh/zshrc

全局 zsh 交互

~/.zprofile

用户登录

~/.zshrc

✅ 用户交互配置(99% 情况改这个)

生效:

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.bashrc

  • zsh:/etc/zsh/zshrc 适合统一给服务器所有用户设置代理、PATH、别名

八、排查常见问题

  1. chsh: invalid shell

    • 原因:路径不在 /etc/shells,用 which zsh 拿到正确路径,确认写入 /etc/shells

  2. source 之后没问题,重新登录失效

    • 登录 shell 和非登录 shell 加载文件不同,不要混淆 .bashrc 和 .bash_profile

  3. 改完默认 shell ssh 连不上

    • 不要随便写不存在的 shell 路径;应急:usermod -s /bin/bash root

  4. 容器环境(alpine):默认是 ash,没有 bash/zsh,需要 apk add bash zsh

九、推荐学习路线

  1. 先用系统自带 bash,熟悉~/.bashrc、PATH、alias、PS1

  2. 想更好体验 → 安装 zsh + oh-my-zsh

  3. 写脚本:脚本头部 #!/bin/bash 固定用 bash(兼容性最强,不要写 #!/bin/sh)


本文原创作者:易君召,详见:https://www.yijunzhao.cc/about,转载请注明出处。

原文链接 https://www.yijunzhao.cc/archives/linux-shell-installation-configuration-complete-guide

欢迎访问 https://www.yijunzhao.cc/

https://www.yijunzhao.cc/