
我很好奇,為什麼添加條目會.bashrc
導致連結被覆蓋?例如,在測試機器上,我安裝了 Java apt-get install openjdk-7-jre
,然後.bashrc
透過新增alias java="echo Java!"
.當我從 bash 運行時java
,我發現它回顯Java!
而不是運行位於/usr/bin/java
.我還發現這種情況發生在ps
,sh
和screen
。那為什麼會發生這種情況呢?
答案1
因為這就是 Bash 的工作原理。它在手冊中 - 當嘗試將輸入與命令匹配時,別名具有更高的優先權。
別名的常見用途是覆蓋命令;例如:
alias java="\java -Xmx=1G"
上述別名將 java 進程可用的預設最大記憶體量從 256MiB 提高到 1GiB。然而,使其產生任何有用效果的唯一方法是,當我鍵入 時java
,它運行別名而不是命令。