unalias仅临时取消当前会话别名;取消单个用unalias 别名名,清空全部用unalias -a,绕过别名可用\命令或绝对路径,永久删除需同步修改~/.bashrc并重载。

直接用 unalias 就能取消,但只在当前 shell 会话生效;别名没被真正“删除”,只是临时失效。
取消单个别名:用 unalias 加别名名
比如你用 alias ll='ls -l --color=auto' 定义过 ll,现在想临时不用它:
- 运行
unalias ll,之后再输ll就会报错command not found - 注意别名名不能带等号或引号,
unalias 'll'或unalias ll='ls -l'都是错的 - 如果误输成
unalias ls,而ls本身不是别名(只是个普通命令),shell 会静默忽略,不报错也不提示
取消所有别名:用 unalias -a
适合调试环境或想彻底还原命令行为时用:
-
unalias -a会清空当前会话中所有通过alias设置的别名 - 它不会影响函数、环境变量或已加载的配置文件,只动别名表
- 执行后
alias命令输出为空,但which ls仍能查到真实路径,说明底层命令没变
别名还在但想绕过一次:用反斜杠或绝对路径
当你只是某次不想触发别名,又不想取消它(比如怕影响后续操作):
- 在命令前加
\,例如\ls—— 这会跳过别名查找,直奔ls可执行文件 - 显式调用完整路径,如
/usr/bin/ls或/bin/ls,效果等同于\ls - 注意
\cp和cp行为可能完全不同:前者不提示覆盖,后者若被 alias 成cp -i就会强制确认
为什么改了 ~/.bashrc 还不生效?
很多人编辑了 ~/.bashrc 把 alias 行删了,却发现 alias 命令还能看到旧别名:
-
unalias是运行时操作,不影响磁盘上的配置文件;删配置文件只是防止下次登录再加载 - 当前会话里的别名还活着,必须手动
unalias或新开终端才清掉 - 如果用了
source ~/.bashrc重载,而文件里仍有alias行,那别名会立刻重新定义 —— 删配置 ≠ 删运行时状态
别名本质是 shell 解析器的一层映射,unalias 只改内存里的这张表;真要“永久消失”,得同时处理运行时(unalias)和持久化配置(删 ~/.bashrc 或 /etc/bashrc 中对应行)。











