~/.bashrc
und /etc/bash.bashrc
werden jedes Mal ausgeführt, wenn eine interaktive bash
Shell gestartet wird.
Im Gegensatz dazu ~/.profile
und /etc/profile
werden jedes Mal ausgeführt, wenn eine Anmeldeshell gestartet wird. Es muss also keine bash
Shell sein, aber es muss eine Login-Shell sein (und viele bash
Shell-Instanzen sind keine Login-Shells ).
- Eine
bash
Shell ist eine Shell, in der sich das Shell-Programm, das sie bereitstellt, befindet bash
, und nicht irgendein anderes Programm, wie z dash
.
- Eine Anmeldeshell ist eine Shell, die als Folge der Anmeldung automatisch gestartet wird, um die Benutzeroberfläche (grafisch oder über die Befehlszeile) für die Anmeldung bereitzustellen. Wenn eine Anmeldeshell beendet wird, wird die Anmeldung beendet.
Das Einfügen eines Empfehlens, an das Einträge PATH
in eine bashrc
Datei angehängt werden, würde daher Folgendes bewirken :
Tun Sie nichts, wenn die Shell nicht ist bash
, was häufig der Fall ist. Wird beispielsweise PATH
nicht geändert, wenn Sie sich in einer grafischen Anmeldesitzung befinden. Denken Sie daran, PATH
wird nicht nur von Befehlszeilenprogrammen verwendet.
Hängen Sie es in Gegenwart verschachtelter bash
Muscheln immer wieder an. Wenn Sie also eine Shell innerhalb einer Shell starten - was aus verschiedenen Gründen sehr häufig vorkommt -, sind mehrere ~/bin
Einträge auf Ihrer Shell gestapelt PATH
. Dies macht das PATH
Lesen der Umgebungsvariablen schwierig und verringert manchmal auch die Leistung.
Diese wären unerwünscht. Daher wäre es falsch , dies in eine bashrc
Datei zu schreiben; es gehört wirklich in ~/.profile
. ~/.profile
ist der richtige Ort für:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Nicht-Login-Shells haben Login-Shells (oder etwas, das sich wie eine Login-Shell verhält) als übergeordnetes Element und erben die meisten ihrer Umgebungsvariablen, einschließlich PATH
dieser Login-Shell. Wenn Sie Befehle zum Ändern von Pfaden eingeben ~/.profile
, müssen Sie sich abmelden und wieder anmelden, damit sie wirksam sind. Dies wirkt sich jedoch auch auf die Umgebung von Nicht-Login-Shells aus (sowie auf die Umgebung für Programme, die keine Shells sind, da jedes Programm seine Befehle erhält eigene Gruppe von Umgebungsvariablen - als "Umgebung" bezeichnet - vom übergeordneten Prozess geerbt).
bin
Verzeichnis bei der Anmeldung nicht vorhanden war und Sie es während dieser Anmeldesitzung erstellt haben. Wenn Sie sich abmelden und wieder anmelden, befindet es sich in IhremPATH
. Da das Erstellen Ihres privatenbin
Verzeichnisses nur einmal durchgeführt werden muss, ist dies eine einmalige Unannehmlichkeit.Dies liegt daran, dass Umgebungsvariablen traditionell nur in
/etc/profile
oder gehen.profile
. Diebashrc
Datei ist für Dinge wie Aliase, Eingabeaufforderungseinstellungen, Shell-Optionen usw. (dh Dinge, die sich direkt auf die Shell beziehen).quelle