Linux / Befehl unalias: Befehlsalias entfernen
unalias ist ein eingebauter Befehl, der Aliase entfernt, die in der aktuellen Bash-Shell registriert sind. Sie können einen bestimmten Alias löschen oder alle Aliase mit der Option -a entfernen, aber es werden nicht automatisch die Definitionen in den Startdateien gelöscht.
Es ist nützlich, wenn aufgrund von Aliassen unerwartete Optionen angewendet werden oder wenn es schwierig ist, den ursprünglichen Befehl auszuführen. Das Verständnis des Unterschieds zwischen temporärer Entfernung und permanenter Entfernung ist entscheidend.
Ergänzende Befehle und Anwendungsfälle finden Sie in Liste der häufig verwendeten Befehle in Linux.
Was ist der unalias-Befehl?
Wenn alias einen Befehlsnamen und einen Ersatzstring registriert, löscht unalias diese Registrierung in der aktuellen Bash-Sitzung. Nach der Löschung wird Bash beim Eingeben des gleichen Namens erneut nach den nächsten Kandidaten suchen, wie Funktionen, eingebauten Befehlen oder ausführbaren Dateien in PATH.
Dieser Artikel basiert auf Bash. Andere Shells können Befehle mit demselben Namen haben, aber unterstützte Optionen und Konfigurationsdateien können abweichen.
Grundlegende Syntax
unalias [-a] [name...]
Das Angeben von einem oder mehreren Namen entfernt die entsprechenden Aliase. -a entfernt alle Aliase in der aktuellen Shell.
Einen bestimmten Alias entfernen
alias ll='ls -alF' unalias ll
Sie können den Zustand vor und nach der Löschung wie unten gezeigt überprüfen.
alias ll unalias ll type ll
Nach dem Entfernen eines Alias, wenn es eine Funktion oder ausführbare Datei mit demselben Namen gibt, kann dieses Ziel ausgewählt werden. Gehen Sie nicht einfach davon aus, dass "der Befehl verschwunden ist"; es wird empfohlen, die verbleibenden Kandidaten mit type -a name zu überprüfen.
Mehrere Aliase gleichzeitig entfernen
unalias ll la grep
Wenn unter den angegebenen Namen ein undefinierter Alias vorhanden ist, kann unalias einen Fehlerstatus zurückgeben. Beachten Sie dies, wenn Sie das Ergebnis in Automatisierungsskripten verwenden.
Alle Aliase entfernen
unalias -a
-a löscht alle Aliase in der aktuellen Shell. Da es nicht nur persönliche Einstellungen, sondern auch von der Distribution bereitgestellte Aliase zur Vereinfachung oder Sicherheit entfernen kann, verwenden Sie es vorsichtig, es sei denn, es handelt sich um eine temporäre Shell, die darauf abzielt, die Ursache eines Problems einzugrenzen.
Um die aktuelle Liste vor dem Löschen zu speichern, können Sie sie wie folgt ausgeben.
alias -p
Unterschied zwischen vorübergehendem Entfernen und dauerhaftem Entfernen
Nur im aktuellen Terminal entfernt
unalias ändert nur die Alias-Tabelle des aktuellen Bash-Prozesses. Wenn Sie das Terminal schließen und eine neue Shell starten, werden Aliase in Startdateien wie ~/.bashrc erneut definiert.
Auch im neuen Terminal entfernen
Um einen Alias dauerhaft zu entfernen, müssen Sie die Konfigurationsdatei finden, in der der Alias definiert ist, und die entsprechende Zeile löschen oder auskommentieren.
grep -n "alias ll=" ~/.bashrc ~/.bash_aliases 2>/dev/null
Nach der Änderung laden Sie mit dem folgenden Befehl die verbleibenden Definitionen neu. Bereits definierte Aliase werden durch das bloße Entfernen ihrer Zeile aus der Datei nicht aus der laufenden Shell gelöscht: Entfernen Sie sie dort zusätzlich mit unalias oder öffnen Sie eine neue Shell.
source ~/.bashrc
Es kann auch in systemweiten Einstellungen wie /etc/bash.bashrc oder /etc/profile.d/ definiert sein. Bevor Systemdateien geändert werden, ziehen Sie in Betracht, es in den Benutzereinstellungen neu zu definieren oder es zunächst nur in der erforderlichen Sitzung zu entfernen.
Ein Alias nur einmal umgehen, ohne ihn zu löschen
Wenn Sie das ursprüngliche Kommando nur einmal ausführen wollen, ist es nicht notwendig, den Alias zu löschen. Sie können entweder einen Backslash vor den Kommandonamen setzen oder den absoluten Pfad der ausführbaren Datei verwenden.
\ls /usr/bin/ls
Ein Backslash verhindert, dass dieses Wort als Alias interpretiert wird. Die Verwendung des absoluten Pfads führt die angegebene Datei aus und umgeht Funktionen mit demselben Namen, wie PATH-Suchen.
Aliases, Funktionen und Variablen haben unterschiedliche Entfernungsarten
| Ziel | Entfernungsbefehl | Wie zu prüfen |
|---|---|---|
| Alias | unalias name |
alias name oder type name |
| Shell-Funktionen | unset -f name |
declare -F name oder type name |
| Shell-Variable | unset name |
declare -p name |
| Ausführbare Datei | Verwenden Sie Dateiverwaltungsbefehle | type -a name oder command -v name |
unalias entfernt keine Funktionen oder Dateien mit demselben Namen. Wenn Sie den Typ des Befehls falsch identifizieren, könnte das beabsichtigte Ziel bestehen bleiben. Prüfen Sie daher zuerst mit type.
Sicher in Skripten verwenden
Um nur zu entfernen, wenn definiert, prüfen Sie zuerst den Exit-Status von alias.
if alias ll >/dev/null 2>&1; then unalias ll fi
Nicht-interaktives Bash führt standardmäßig keine Alias-Erweiterung durch, daher gibt es nicht viele Situationen, in denen ein normales Skript Benutzer-Aliase entfernen muss. Es ist besser, Skripte so zu schreiben, dass sie nicht von den persönlichen Einstellungen einer interaktiven Shell abhängen.
Häufige Probleme
nach unalias erscheint das Alias in einem neuen Terminal erneut.
Das liegt daran, dass es in ~/.bashrc, ~/.bash_aliases oder Systemstartdateien erneut definiert wird. Sie müssen den Definitionsort finden und ändern.
Fehler 'unalias: nicht gefunden' tritt auf.
Der angegebene Name ist wahrscheinlich kein Alias in der aktuellen Shell. Verwenden Sie type -a name, um zu prüfen, ob es sich um eine Funktion, einen eingebauten Befehl oder eine ausführbare Datei handelt.
Das Befehlsverhalten scheint immer noch unterschiedlich zu sein.
Es könnte eine Shell-Funktion mit demselben Namen oder mehrere ausführbare Dateien in verschiedenen Pfaden geben. Verwenden Sie type -a name, um alle Kandidaten zu überprüfen, und löschen Sie bei Bedarf den Befehls-Pfad-Cache von Bash mit hash -r, bevor Sie erneut prüfen.
Auswahl entsprechend der Nutzungssituation
| Situation | Empfohlene Methode |
|---|---|
| Führen Sie den Originalbefehl nur einmal aus | Verwenden Sie \name oder den absoluten Pfad. |
| Alias im aktuellen Terminal entfernen | Verwenden Sie unalias name. |
| Die Auswirkungen aller Aliase vorübergehend entfernen | Die Liste überprüfen und dann unalias -a verwenden. |
| Auch im neuen Terminal entfernen | Die Startdatei bearbeiten, in der das Alias definiert ist. |
| Eine Funktion mit demselben Namen entfernen | Verwenden Sie unset -f name. |
Häufig gestellte Fragen
Kann ich die Aliase nach unalias -a wiederherstellen?
Es gibt keine Funktion, um die Alias-Definitionen der aktuellen Shell direkt zurückzusetzen. In der Startdatei gespeicherte Aliase können mit source ~/.bashrc neu geladen werden, aber Aliase, die nur über die Befehlszeile erstellt wurden, müssen neu definiert werden.
Beeinflusst unalias auch andere Terminals?
Nein. Jeder Terminal-Shell-Prozess hat seine eigene separate Alias-Tabelle, sodass das Ausführen von unalias in der aktuellen Shell andere Shells nicht direkt beeinflusst.
Was passiert, wenn man denselben Namen wie den gelöschten Alias eingibt?
Bash sucht nach verbleibenden Funktionen, eingebauten Befehlen und ausführbaren Dateien in PATH gemäß den Suchregeln für Befehle. Das tatsächliche Ergebnis kann mit type name überprüft werden.
Weitere Angaben zu Syntax, Implementierung und Verfügbarkeit finden Sie unter GNU Bash Handbuch: Aliase und GNU Bash Handbuch: Bash-Built-in-Befehle.




