我很好奇,为什么添加条目会.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
,它会运行别名而不是命令。