為什麼設定別名會覆蓋可執行連結?

為什麼設定別名會覆蓋可執行連結?

我很好奇,為什麼添加條目會.bashrc導致連結被覆蓋?例如,在測試機器上,我安裝了 Java apt-get install openjdk-7-jre,然後.bashrc透過新增alias java="echo Java!".當我從 bash 運行時java,我發現它回顯Java!而不是運行位於/usr/bin/java.我還發現這種情況發生在ps,shscreen。那為什麼會發生這種情況呢?

答案1

因為這就是 Bash 的工作原理。它在手冊中 - 當嘗試將輸入與命令匹配時,別名具有更高的優先權。

別名的常見用途是覆蓋命令;例如:

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

上述別名將 java 進程可用的預設最大記憶體量從 256MiB 提高到 1GiB。然而,使其產生任何有用效果的唯一方法是,當我鍵入 時java,它運行別名而不是命令。

相關內容