Ich versuche herauszufinden, wo ein bestimmtes alias
deklariert wurde. Ich habe an allen mir bekannten Orten nach Aliasen gesucht:
- ~ / .bashrc
- ~ / .bash_profile
- / etc / bashrc
- / etc / profile
Mit keinem Glück.
Ich weiß, dass es eine ist, alias
weil ich dann which COMMAND
Folgendes bekomme:
alias COMMAND='/path/to/command'
/path/to/command
Gibt es eine Möglichkeit, herauszufinden, welche Datei alias
nur den alias
Namen kennt ?
set -x
wie oben vorgeschlagen, zu platzieren, und prüfen Sie, ob dies für Sie eine Einschränkung darstellt.set -x
an der Spitze von/etc/bash_profile
oder setzen/etc/bashrc
. Warum nicht einfach rennenbash -i -x
oderbash -l -x
?Antworten:
Ich würde nach
/etc/profile.d/
Beleidigungen Ausschau haltenalias
.Sie können auch Folgendes tun, um es zu finden:
Dies wird rekursiv
grep
durch Dateien gehen, die nach einer Zeile suchen, die mit beginntalias COMMAND
.Wenn alles andere fehlschlägt, setzen Sie dies am Ende Ihrer
~/.bashrc
quelle
Es gibt ein paar Dinge, die Sie ausprobieren können:
bash -v
Sie diese Option, um zu sehen, welche Zeilen beim Starten der Shell gelesen werdenbash -x
Sie diese Option, um zu sehen, welche Befehle während des Shell-Starts ausgeführt werdenbash -v
Mit dieser
-v
Option wirdbash
jede Zeile aus jeder gelesenen Skriptdatei so gedruckt, wie sie gelesen wird.Beginnen Sie mit dem Laufen
Warten Sie 5-10 Sekunden und drücken Sie dann Ctrl+C.
Auf diese Weise erhalten Sie eine einzelne Datei, die so heißt
bash-i.out
, als würden alle Startdateien zusammengeführt (oder verkettet).Verwenden Sie dann
less
die Datei zu öffnen und mit dem Alias suchen/aliasname
.Vergleichen Sie nun, wo dieser Alias in Bezug auf andere Zeilen in der Datei angezeigt wird. Zum Beispiel auf den meisten Systemen,
/etc/bash.bashrc
hat einen Kommentar an der Spitze , die sagt ,/etc/bash.bashrc
und~/.bashrc
eine zu hat.Wenn es sich über Ihrer befindet
~/.bashrc
, ist es wahrscheinlich eine Startdatei, in/etc
der der Alias definiert wird, ansonsten befindet es sich in Ihrer~/.bashrc
oder einer Datei, die übersource
oder.
(Punktbefehl) eingeschlossen wird.Wenn der Alias nicht angezeigt wird, versuchen Sie es
Das bedeutet, dass bash eine Login-Shell ist, die zum Beispiel verschiedene Startdateien liest
/etc/profile
und~/.bash_profile
anstelle von/etc/bash.bashrc
und~/.bashrc
.bash -x
Wenn
bash -v
Sie keine eindeutige Antwort erhalten, versuchen Sie es mit running. Dabeibash -x
werden die Befehle gedruckt, die von der Shell ausgeführt werden, und nicht die Zeilen, die von der Shell gelesen werden.Die Methode ist im Grunde die gleiche wie oben, mit Ausnahme der Änderung
-v
von-x
. (Sie können beide bei Bedarf zusammen verwenden.)Führen Sie nur eine Startdatei aus
und sehen, ob Sie den Alias haben.
Versuchen Sie dasselbe mit
rcfile
set to,/etc/bash.bashrc
wenn Ihr System es hat.Dann versuche es
und machen Sie dasselbe mit jeder Bash-Startdatei, die
profile
in ihrem Namen steht, z . B. change$HOME/.bash_profile
to/etc/profile
.Auf welche Weise der Alias angezeigt wird, zeigt an, welche Datei Sie sich ansehen sollten.
quelle
Vielleicht dein
.xinitrc
? Sie sollten auch überprüfen, ob Ihre.bashrc
oder.bash_profile
andere Dateien darin enthalten sind. Ich behalte beispielsweise alle meine Aliase in einer separaten Datei, auf die mit diesem Befehl verwiesen wird:Einige Fragen, die auch helfen könnten: Ist dies für einen regulären oder Root-Benutzer? Welcher Befehl ist das? Welcher Geschmack von Linux?
quelle
Ich folge der sehr üblichen Praxis, meine Alias-Definitionen in zu setzen
und dann das von .bashrc mit aufrufen
quelle