
Ich habe vor kurzem ein Arch-Linux-System installiert. Wenn ich tippe
echo $PATH
es verweist (unter anderem) auf ein Verzeichnis in meinem, das /home/user/dir
ich, soweit ich mich erinnern kann, irgendwo eingerichtet habe. Ich habe es auch als Root-Benutzer, also kann es nicht drin sein ~/.bashrc
und ist auch nicht drin /root/.bashrc
. Ich habe auch drinnen nachgesehen /etc/profile
, /etc/bash.bashrc
konnte es aber auch dort nicht finden.
Gibt es eine Möglichkeit herauszufinden, wo es eingestellt ist?
Antwort1
Versuchen Sie, in allen Dateien in folgendem Verzeichnis nach dem Verzeichnis zu suchen /etc
:
sudo grep -r "/home/user/dir" /etc
Der -r
Schalter ermöglicht grep
die Suche /home/user/dir
imInhaltaller Dateien im Verzeichnis /etc
und seinen Unterverzeichnissen.
-DAKTION,--directories=AKTION
Wenn eine Eingabedatei ein Verzeichnis ist, verwenden Sie ACTION, um sie zu verarbeiten. Standardmäßig ist ACTIONlesen, was bedeutet, dass Verzeichnisse genauso gelesen werden, als wären sie normale Dateien. Wenn ACTIONüberspringen, werden Verzeichnisse stillschweigend übersprungen. Wenn ACTIONrekursiv, grep liest alle Dateien in jedem Verzeichnis rekursiv; dies entspricht dem-RMöglichkeit.
Wenn das nicht klappt, können Sie die Suche einfach erweitern aufalleDateien:
sudo grep -r "/home/user/dir" /
Oder Sie könnten nach allen Dateien suchen, die die PATH
Variable ändern:
sudo grep -r "PATH=" /
Antwort2
Es ist normalerweise keine gute Idee, Benutzerverzeichnisse als Root im globalen Pfad abzulegen ;) Haben Sie die /etc/environment
Datei überprüft?
Antwort3
@Dennis macht mich auf eine nette Idee aufmerksam! Ich habe in meinem gesucht /etc
und es gefunden, aber mit einem anderen Befehl, da sein Befehl nur nach Dateinamen sucht (soweit ich weiß).
Das, was ich erfolgreich verwendet habe, war
find / -type f -exec grep -i /home/user/dir '{}' \; -print
Antwort4
Wenn Sie tief in Ihrem PATH nach etwas suchen, das definiert ist, können Sie diese Alternative ausprobieren mitder Silbersucherfür die schnelle Suche.
Standardmäßig werden Übereinstimmungen mit Zeilennummern ausgegeben. Kombinieren Sie es also mit , egrep
um nur die Ausgabe der Dateinamen zu erhalten. Es werden auch Zeilennummern ausgegeben, die Übereinstimmungen enthalten, um cut
Dateinamen zu isolieren, uniq
wenn Sie keine Duplikate möchten. Natürlich können alle Pipe-Befehle weggelassen werden, wenn Sie keine vollständige Ausgabe der Übereinstimmungen wünschen.
ag -s '/home/user/dir' | egrep '^\d+' | cut -d ':' -f 1 | uniq