Wo ist das Skript für den Alias-Befehl in Linux?

Wo ist das Skript für den Alias-Befehl in Linux?

Ich möchte ein Argument zum Bash-Alias-Skript hinzufügen, damit ich es einfach ausführen kann

alias -p l='ls -l'

und es würde dauerhaft zu meiner .zshrc hinzugefügt. Aber ich kann das Shell-Skript für den Alias ​​nicht finden.

Ich habe es versucht whereis alias, aber ohne Erfolg. Sogar man aliasdie Anzeige „Alias“ hat keinen Eintrag.

Ich habe nachgeschaut, /usr/bin, /usr/share/local/binaber ohne Erfolg. Kann mir jemand den Standort zeigen?

EDIT: Ich habe auch versucht, in allen möglichen Pfaden zu suchen, indemls $(echo $PATH| tr ':' '\n') | grep alias

Antwort1

aliasist ein eingebauter Befehl, der also weder als Skript in einer Datei noch als Funktion angezeigt wird. Der typeBefehl zeigt Folgendes:

$ type alias
alias is a shell builtin 

Sie können es aber trotzdem überschreiben. Eine Funktion mit demselben Namen maskiert das integrierte Element, sofern sie nicht explizit mit dem builtinintegrierten Element aufgerufen wird.

Also, so etwas sollte funktionieren:

alias() {
    if [ "$1" = "-p" ]; then
        echo "-p was given";
        shift;
    fi;
    builtin alias "$@";
}

Wenn Sie die gleiche Aliaszuweisung in eine Datei drucken möchten, müssen Sie darauf achten, dass die Anführungszeichen richtig sind, damit sie als Eingabe für die Shell verwendet werden kann.

So etwas könnte funktionieren (direkt nach der shiftFunktion hinzugefügt), aber testen Sie es:printf "alias %q\n" "$@" >> ~/my.alias.file

Was das Problem Bash vs. Zsh angeht, denke ich, dass das oben genannte bei beiden funktioniert, aber ich bin kein Zsh-Experte.


Übrigens möchten Sie vielleicht auch beachten, dass Bash aliasbereits über eine -pOption verfügt help alias, die lautet:

  Options:
    -p        print all defined aliases in a reusable format

Ich weiß nicht, ob es irgendeinen Nutzen hat, da das Standardverhalten aliasohne Argumente auch darin besteht, alle Aliase in einem wiederverwendbaren Format zu drucken.

Antwort2

Ihr aliasBefehl ist höchstwahrscheinlich ein Shell-Builtin und kein Skript. Sie können dies mit dem folgenden typeBefehl überprüfen:

user@host:~$ type alias
alias is a shell builtin

Um eine Dokumentation zu den aliasintegrierten Funktionen zu erhalten, sehen Sie sich die bashManpage an:

man bash

Um einen Alias ​​dauerhaft zu machen, fügen Sie den Befehl normalerweise zu einer Ihrer Bash-Profildateien hinzu - höchstwahrscheinlich Ihrer ~/.bashrcDatei, z. B.:

user@host:~$ echo "alias l='ls -l'" >> ~/.bashrc

Antwort3

Soweit ich das beurteilen kann, zshwerden keine dauerhaften Aliase unterstützt.

Wenn Sie persistente Aliase mögen, empfehle ich Ihnen,http://schilytools.sourceforge.net/man/man1/bosh.1.htmlfür eine Implementierung von Aliasnamen mit dauerhafter Verfügbarkeit.

Für andere Shells können Aliase nur als Alias-Befehle in die zugehörige .*shrcDatei geschrieben werden.

Antwort4

Ich arbeite hauptsächlich mit der Bash und habe meine Aliase in .bashrc.

Es befindet sich in meinem Home-Verzeichnis unter /home/myuser/.bashrc

verwandte Informationen