Linux 中 alias 失效是很常见的问题,通常不是 alias 本身写错了,而是使用场景或加载时机不对。下面按常见原因逐一说明。
你在终端里直接执行:
alias ll='ls -l'
这只是当前 shell 会话有效,关闭终端或新开窗口就失效。
✅ 正确做法:写入配置文件
# bash
~/.bashrc
# zsh
~/.zshrc
然后:
source ~/.bashrc
在脚本里:
#!/bin/bash
ll
会报错:ll: command not found
原因:
.bashrc✅ 解决方式(不推荐用 alias):
ll() {
ls -l "$@"
}
shopt -s expand_aliases
sudo ll
❌ 失效,因为:
✅ 解决:
sudo ls -l
或
alias sudo='sudo '
(末尾空格很关键)
例如:
alias ll='ls -l'
但后面 .bashrc 里又写了:
alias ll='ls -la'
✅ 检查:
alias ll
type ll
你在 .bashrc 里写的,但用的是 zsh:
echo $SHELL
✅ 对应文件:
| shell | 文件 |
|---|---|
| bash | ~/.bashrc |
| zsh | ~/.zshrc |
| fish | ~/.config/fish/config.fish |
ssh user@host ll
❌ 非交互 shell,不加载 alias
✅ 用函数或完整命令
echo $SHELL
type ll
alias
cat ~/.bashrc | grep alias
✅ 复杂命令用函数,不用 alias
mkcd() {
mkdir -p "$1" && cd "$1"
}
✅ alias 只用于简单替换
alias gs='git status'
如果你愿意,可以告诉我: