在 CentOS 中,alias(别名)失效是一个非常常见的问题,通常不是系统坏了,而是生效范围或加载时机不对。下面按最常见原因 → 解决办法给你梳理。
alias ll='ls -l'
这种写法 只对当前 shell 有效。
✅ 正确做法:写入配置文件
vim ~/.bashrc
添加:
alias ll='ls -l'
然后执行:
source ~/.bashrc
alias 默认只在交互式 shell 生效
例如:
su otheruser
bash script.sh
都会 不加载 alias
✅ 解决方式:
shopt -s expand_aliases
source ~/.bashrc
CentOS 默认是 bash,但如果你切过 shell:
echo $SHELL
如果是:
/bin/zsh → 改 ~/.zshrc/bin/dash → alias 基本不可用✅ 解决:
vim ~/.zshrc
常见错误:
| 文件 | 是否生效 |
|---|---|
| ~/.bashrc | ✅ 正常登录 |
| ~/.bash_profile | ❌ 普通终端可能不读 |
| /etc/profile | ✅ 全局,但重启才稳 |
| /etc/bashrc | ✅ 全局 |
✅ 推荐:
~/.bashrc/etc/bashrc例如:
alias ll='ls'
alias ll='ls -l'
后写的生效,但如果你在别的地方又定义了一次就会乱。
检查:
alias ll
su
不会加载普通用户的 alias
✅ 正确切换:
su -
或:
sudo -i
# 1. 当前 shell
echo $SHELL
# 2. 是否生效
alias ll
# 3. 配置文件是否存在
cat ~/.bashrc | grep alias
# 4. 手动加载
source ~/.bashrc
echo "alias ll='ls -lh'" >> ~/.bashrc
source ~/.bashrc
如果你愿意,可以把 具体场景 发我,比如:
我可以直接告诉你哪一行该改。