![为什么设置别名会覆盖可执行链接?](https://linux22.com/image/1460284/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%AE%BE%E7%BD%AE%E5%88%AB%E5%90%8D%E4%BC%9A%E8%A6%86%E7%9B%96%E5%8F%AF%E6%89%A7%E8%A1%8C%E9%93%BE%E6%8E%A5%EF%BC%9F.png)
我很好奇,为什么添加条目会.bashrc
导致链接被覆盖?例如,在一台测试机器上,我安装了 Java,然后通过添加apt-get install openjdk-7-jre
来尝试。当我从 bash 运行时,我发现它回显了位于 的 而不是运行 java 。我还发现这种情况发生在、和 上。那么为什么会发生这种情况呢?.bashrc
alias java="echo Java!"
java
Java!
/usr/bin/java
ps
sh
screen
答案1
因为这就是 Bash 的工作方式。手册里有写 - 当尝试将输入与命令匹配时,别名具有更高的优先级。
别名的常见用途是覆盖命令;例如:
alias java="\java -Xmx=1G"
上述别名将 Java 进程可用的默认最大内存量从 256MiB 提高到 1GiB。但是,要使此别名发挥任何有用的作用,唯一的方法是,当我输入时java
,它会运行别名而不是命令。