Der whichBefehl gibt nur ausführbare Dateien zurück: Er weiß nichts über Aliase, da es sich um ein externes Programm handelt und es keinen Mechanismus zum Übergeben von Aliasinformationen an einen untergeordneten Prozess gibt.
Wenn Sie den Befehl eingeben type -a cp, werden alle möglichen Interpretationen in der Reihenfolge ihrer Präferenz angezeigt. Dies schließt jeden Alias ein, da typees sich um einen bashinternen Befehl handelt.
Es ist wichtig zu wissen, dass ein Alias nicht von einem Unterprozess wie einem Skript oder einem interaktiven Editor interpretiert wird, der die Option zum Ausführen von Systembefehlen bietet.
Wenn Sie cpeine Funktion erstellen, wird Ihre Version in Skripten ausgeführt, jedoch nicht in anderen Programmen:
cp() { /usr/local/bin/gcp "$@"; }
Wenn Sie möchten, dass Sie cpüberall arbeiten, fügen Sie $HOME/binam Anfang Ihrer PATHListe hinzu und zeigen $HOME/bin/cpSie darauf:
ln -s /usr/local/bin/gcp $HOME/bin/cp
Dies macht einen symbolischen Link, obwohl Sie ihn zu einem etwas effizienteren Hardlink machen können (weglassen -s), aber dies erfordert normalerweise Root-Berechtigungen ( sudo ln ...). Das Erstellen einer Funktion und das Hinzufügen zur PATHVariablen erfolgt in einem der bashStartskripts mit Benutzerberechtigungen.
PATHenvar.