Warum wird ein ausführbarer Link durch das Festlegen eines Alias ​​überschrieben?

Warum wird ein ausführbarer Link durch das Festlegen eines Alias ​​überschrieben?

Mich würde interessieren, warum das Hinzufügen eines Eintrags zu .bashrcdazu führt, dass ein Link überschrieben wird? Ich habe beispielsweise auf einer Testmaschine Java mit installiert apt-get install openjdk-7-jreund dann mit herumgespielt, .bashrcindem ich hinzugefügt habe alias java="echo Java!". Als ich es javavon Bash aus ausgeführt habe, habe ich festgestellt, dass es ein Echo ausgibt, Java!anstatt Java auszuführen, das sich unter befindet . Ich habe auch festgestellt, dass dies mit , und /usr/bin/javapassiert . Warum passiert das also?psshscreen

Antwort1

Denn so funktioniert Bash. Es steht im Handbuch: Aliase haben eine höhere Priorität, wenn versucht wird, Eingaben einem Befehl zuzuordnen.

Aliase werden üblicherweise zum Überschreiben von Befehlen verwendet. Beispiel:

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

Der obige Alias ​​erhöht die standardmäßige maximale Speichermenge, die einem Java-Prozess zur Verfügung steht, von 256 MiB auf 1 GiB. Dies kann jedoch nur dann einen nützlichen Effekt haben, wenn beim Eintippen javader Alias ​​und nicht der Befehl ausgeführt wird.

verwandte Informationen