在 CentOS 中,alias 失效是一个非常常见的问题,通常不是 alias 本身写错,而是生效范围/加载时机不对。下面按最常见原因给你梳理一下。
alias ll='ls -l'
退出终端后再登录就没了。
✅ 正确做法:写入配置文件
vim ~/.bashrc
添加:
alias ll='ls -l'
然后:
source ~/.bashrc
cronsu user -c "命令"这些情况下 默认不加载 alias。
例如:
su test -c "ll"
会报错:ll: command not found
✅ 解决方式:
shopt -s expand_aliases
source ~/.bashrc
CentOS 默认是 bash,但你可能:
zshshalias 文件不同:
~/.bashrc~/.zshrc✅ 检查:
echo $SHELL
~/.bash_profile 里写 alias(不推荐)登录 shell 加载:
/etc/profile
~/.bash_profile
非登录 shell(如新开终端)不会加载
✅ 推荐写在:
~/.bashrc
例如:
alias ll='ls -l'
alias ll='ls'
后者生效。
✅ 检查:
alias ll
sudo ll
sudo 不会继承 alias。
✅ 替代方案:
sudo ls -l
或:
alias sudoll='sudo ls -l'
系统级位置:
/etc/bashrc
/etc/profile.d/*.sh
✅ 测试是否被加载:
grep alias /etc/bashrc
echo $SHELL
alias
source ~/.bashrc
type ll
# ~/.bashrc
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
# ~/.bash_aliases
alias ll='ls -l'
alias la='ls -a'
如果你愿意,可以把失效场景(终端 / 脚本 / cron / sudo)发给我,我可以直接给你对应解决方案。