Linux 中 alias 失效是很常见的问题,通常不是 alias 本身写错了,而是加载时机 / 作用范围 / 子 shell 导致的。下面按最常见原因逐一说明。
alias ll='ls -l'
✅ 正确做法:写入配置文件
# bash
~/.bashrc
# zsh
~/.zshrc
然后:
source ~/.bashrc
# test.sh
#!/bin/bash
alias ll='ls -l'
ll
直接运行:
./test.sh
❌ 不会生效
shopt -s expand_aliases
alias ll='ls -l'
ll
ll() {
ls -l "$@"
}
| Shell | 配置文件 |
|---|---|
| bash(交互) | ~/.bashrc |
| bash(登录) | ~/.bash_profile |
| zsh | ~/.zshrc |
❌ 写在 ~/.profile 但用的是 bash 交互终端 → 不加载
✅ 推荐统一写在 ~/.bashrc
sudo ll
❌ 失效
sudo bash -c 'alias ll="ls -l"; ll'
或:
sudo ls -l
检查:
alias ll
没输出说明没定义
强制重新加载:
source ~/.bashrc
if [ "$USER" = "root" ]; then
alias ll='ls -l'
fi
如果条件不满足 → alias 不存在
~/.bashrc / ~/.zshrcsource 过shopt -s expand_aliases)sudo如果你愿意,可以告诉我:
我可以帮你精确定位原因。