在 Ubuntu(其实所有 Linux shell)里,“alias 冲突”通常有以下几种情况和含义,我按常见场景给你梳理一下,并给出解决办法。
如果你在多个地方写了同名 alias,比如:
# ~/.bashrc
alias ll='ls -l'
# ~/.bash_aliases
alias ll='ls -la'
结果:
后加载的那个会覆盖前面的。
顺序一般是:
~/.bashrc → source ~/.bash_aliases
所以 ~/.bash_aliases 里的会赢。
✅ 解决:
alias ll 查看当前生效的例如:
alias grep='grep --color=auto'
但你自己又写了一个 grep 函数或脚本。
冲突表现:
✅ 查看优先级:
type grep
✅ 临时绕过 alias:
\grep
command grep
比如:
alias cd='echo no cd'
这会导致 cd 失效或行为异常。
✅ 解决:
unalias cd 恢复脚本默认 不展开 alias(除非你写):
shopt -s expand_aliases
很多人以为是 alias 冲突,其实是脚本环境不同。
✅ 解决:
你在:
.bashrc 写 aliaszsh / fish结果 alias 根本不加载。
✅ 解决:
~/.bashrc~/.zshrcalias 命令或 ~/.config/fish/config.fishalias # 查看所有 alias
alias 名字 # 查看某个 alias
type 名字 # 看是 alias / function / command
unalias 名字 # 删除 alias
如果你能贴一下具体的冲突现象或报错(比如哪个命令、哪两个 alias),我可以直接帮你定位是哪一类冲突。