
Wie kann ich die Datei finden, in der eine Bash-Variable definiert ist?
Angenommen, der echo
Befehl zeigt
$ echo $DB_ROOT
/home/mahmood/db-4.0
Wie kann ich nun die Datei finden, in der diese Variable definiert wurde? Ich muss sagen, dass ich sie nicht definiert habe ~/.bashrc
.
Antwort1
Es gibt eine große Anzahl von Orten, an denen eskönntedefiniert sein.
Eine vollständige Erklärung finden Sie auf der bash
Manpage unter INVOCATION
. Ich muss Sie jedoch warnen, dass Sie wahrscheinlich Kopfschmerzen bekommen werden, bevor Sie alles herausgefunden haben :-)
Abhängig davon, wie die Shell aufgerufen wird und welche Dateien vorhanden sind, kann es sich um eines oder mehrere der folgenden Dinge handeln:
/etc/profile
./etc/bash.bashrc
~/.bash_profile
.~/.bash_login
.~/.profile
.~/.bashrc
.- was auch immer mit der Option angegeben wird
--rcfile
. BASH_ENV
was auch immer mit der Umgebungsvariablen angegeben wird .ENV
was auch immer mit der Umgebungsvariablen angegeben wird .- jede Datei, die aus den vorhergehenden Dateien aufgerufen wird.
Normalerweise stelle ich sicher, dass ich ein habe ~/.bash_profile
(da dies die höchste Priorität des Sets ist {~/.bash_profile, ~/.bash_login, ~/.profile}
- es verarbeitet nur dieErstedie es in dieser Gruppe findet).
Ich stelle außerdem sicher, dass ich ~/.bashrc
die ~/.bash_profile
Quellenangabe am Ende habe.
Auf diese Weise ~/.bash_profile
hält nur das, was ich in Login-Shells brauche und ~/.bashrc
hält das, was ich will injedenShell. Sie müssen nur sicherstellen, dass letztere keine „kumulativen“ Befehle enthält (wie das Hinzufügen von etwas am Ende des Pfads).
Es gibt andere Möglichkeiten, es einzurichten, insbesondere wenn Sie unterschiedliche Shells verwenden und Profile untereinander teilen müssen, aber das obige Schema ist das einfachste, das ich in bash
-only-Setups gefunden habe.