为什么设置别名会覆盖可执行链接?

为什么设置别名会覆盖可执行链接?

我很好奇,为什么添加条目会.bashrc导致链接被覆盖?例如,在一台测试机器上,我安装了 Java,然后通过添加apt-get install openjdk-7-jre来尝试。当我从 bash 运行时,我发现它回显了位于 的 而不是运行 java 。我还发现这种情况发生在、和 上。那么为什么会发生这种情况呢?.bashrcalias java="echo Java!"javaJava!/usr/bin/javapsshscreen

答案1

因为这就是 Bash 的工作方式。手册里有写 - 当尝试将输入与命令匹配时,别名具有更高的优先级。

别名的常见用途是覆盖命令;例如:

alias java="\java -Xmx=1G"

上述别名将 Java 进程可用的默认最大内存量从 256MiB 提高到 1GiB。但是,要使此别名发挥任何有用的作用,唯一的方法是,当我输入时java,它会运行别名而不是命令。

相关内容