在 Ubuntu(以及一般的 Linux shell) 里,alias 本身不能直接“嵌套”调用另一个 alias 作为定义的一部分来展开,但有一些细节和替代方案需要说清楚。
例如:
alias ls='ls --color=auto'
alias ll='ls -l'
看起来 ll 用了 ls,但实际上:
ll 只是把字符串 ls -l 存下来ls 这个 aliasls -l,而不是 ls --color=auto -l✅ 结果:
ll 不会继承 ls 的 alias 选项
alias 的展开规则是:
alias ls='ls --color=auto'
lsl() {
ls -l "$@"
}
# 或者
alias ll='ls -l'
如果你想“继承”:
ll() {
ls -l "$@"
}
这样 ll 会真正调用 ls(已 alias 过的)
my_ls() {
ls --color=auto "$@"
}
alias ll='my_ls -l'
alias ll='ls --color=auto -l'
某些 shell(如 zsh)支持 alias 递归展开,但:
| 问题 | 答案 |
|---|---|
| alias 能嵌套吗 | ❌ 不能真正嵌套 |
| ll 会用 ls 的 alias 吗 | ❌ 不会 |
| 推荐方式 | ✅ 用 function |
| Ubuntu 默认 shell | bash |
如果你愿意,我可以帮你把现有的 .bashrc alias 改造成“可嵌套”的版本。