用 unalias 可临时取消别名,仅对当前会话生效;永久取消需修改 ~/.bashrc 等配置文件并重载;绕过别名可用 \ls 或 /bin/ls。

直接用 unalias 就能取消,但只对当前 shell 会话生效;永久取消得改配置文件。
取消单个别名:用 unalias 别名名
这是最常用、最直接的方式。比如你设置了 alias ll='ls -la',现在想临时去掉它:
- 运行
unalias ll,之后再输ll就会报错command not found - 别名名不能带等号或引号,只写名字本身,比如
unalias cp,不是unalias 'cp -i' - 如果别名不存在,
unalias会静默失败(不报错),也不会提示,容易误以为成功了 - 执行后只影响当前终端窗口,新开一个终端,别名还在
取消所有别名:用 unalias -a
适合调试环境或临时清理别名干扰,比如你在写脚本时怀疑某个别名影响了命令行为:
-
unalias -a会清空当前 shell 中所有用户定义的别名(系统自带的如cd不受影响) - 不会动任何配置文件,纯内存操作,关掉终端就恢复
- 注意:某些发行版默认给
rm、cp加了-i别名,unalias -a后这些保护就没了,删文件前务必确认
绕过别名执行原命令:不用取消也能“临时禁用”
有时候你只是想这次不用别名,而不是彻底删掉它:
- 在命令前加反斜杠:
\ls会跳过ls的别名,直接调用/bin/ls - 用绝对路径:
/usr/bin/cp或/bin/rm,完全绕过 shell 查找别名的逻辑 - 注意:
\只对下一个词生效,\ls -la有效,但\ls\ -la是错的 - 这种写法常用于脚本中避免别名污染,比
unalias更安全可控
永久取消别名:必须修改配置文件
unalias 再多也改不了下次登录——因为别名通常写在 ~/.bashrc、~/.bash_profile 或 /etc/profile 里:
- 先查来源:
grep -n "alias ll" ~/.bashrc找到定义行 - 注释掉那行(前面加
#)或直接删掉,然后source ~/.bashrc生效 - 如果是系统级别别名(比如在
/etc/profile.d/下的aliases.sh),普通用户没权限改,只能用\或绝对路径绕过 - 别忘了检查多个文件:不同 shell(zsh/bash)加载不同配置,
zsh用户要看~/.zshrc
最容易被忽略的是:别名是否来自 shell 插件(如 oh-my-zsh)、是否被其他配置文件二次加载、以及 source 后是否真的重载成功——建议改完后新开终端验证,别只信 source 的返回值。











