在 Linux 中,alias(别名)的优先级遵循一定的命令解析顺序。理解这个顺序,有助于避免“为什么我的 alias 没生效”或“为什么执行了别的东西”的问题。
当你在 shell(如 bash / zsh)中输入一条命令时,shell 大致按以下顺序解析:
⚠️ 注意:不同 shell 细节略有差异,但 alias 通常优先于 builtin 和 external command。
alias ls='ls --color=auto'
执行:
ls
→ 使用的是 alias,而不是 /bin/ls
alias echo='echo alias'
echo hello
→ 输出:alias hello
alias 优先于 function
alias foo='echo alias'
foo() { echo function; }
foo
输出:
alias
\\ls
→ 忽略 alias,使用原始命令
commandcommand ls
→ 忽略 alias 和 function,只用外部命令
/bin/ls
alias ll='ls -l'
alias ll='ls -la'
→ 最终 ll 是 ls -la
# 脚本中
alias ll='ls -l'
ll # 可能报错
解决:
shopt -s expand_aliases
alias # 查看所有 alias
type ll # 查看 ll 是什么
type -a ll # 查看所有匹配(alias / function / file)
Linux 中 alias 的优先级最高,优先于内建命令、函数和 PATH 命令;可用
\、command或绝对路径绕过。
如果你有具体场景(比如 bash vs zsh、脚本中 alias、sudo 下 alias 失效等),可以继续问。