在 CentOS(以及其它 Linux 发行版)里,alias 是可以覆盖的,而且很常见。
直接在终端里重新定义即可:
alias ll='ls -lh'
alias ll='ls -la' # 覆盖前面的 ll
后定义的会覆盖先定义的,只对当前 shell 会话有效,退出终端后失效。
alias 通常定义在以下文件中(按加载顺序):
~/.bashrc(用户级,最常用)~/.bash_profile 或 ~/.profile/etc/bashrc(系统级,对所有用户)覆盖方法:
vi ~/.bashrc
alias,直接修改或重新写一行:alias ll='ls -la'
source ~/.bashrc
alias 不能覆盖 shell 内建命令的绝对路径执行
例如:
alias cp='cp -i'
你仍然可以用:
/bin/cp file1 file2
来绕过 alias。
alias 不能带参数位置(和函数不同)
如果复杂逻辑,建议用 function 而不是 alias。
如果 alias 没生效,可能是:
sourcealias # 查看所有
alias ll # 查看某个
unalias ll # 删除某个
如果你愿意,可以告诉我你具体想“覆盖什么 alias”,我可以给你最准确的写法。