GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der beste Weg, um eine Umgebungsvariable in .bashrc festzulegen?

Lösung 1:

Der beste Weg

export VAR=value

Der Unterschied

Mache

VAR=value

setzt die Variable nur für die Dauer des Skripts (.bashrc in diesem Fall). Untergeordnete Prozesse (falls vorhanden) des Skripts haben keine VAR-Definition, und sobald das Skript beendet wird VAR ist weg.

export VAR=value

fügt ausdrücklich VAR hinzu in die Liste der Variablen, die an untergeordnete Prozesse übergeben werden. Willst du es versuchen? Öffnen Sie eine Shell, machen Sie

PS1="foo > "
bash --norc

Die neue Shell erhält die Standard-Eingabeaufforderung. Wenn Sie stattdessen so etwas tun wie

export PS1="foo > "
bash --norc

die neue Shell erhält die Eingabeaufforderung, die Sie gerade festgelegt haben.

Aktualisierung: wie Ian Kelling unten in .bashrc festgelegte Variablen anmerkt bleiben in der Shell bestehen, die .bashrc bezogen hat . Allgemeiner ausgedrückt, immer wenn die Shell ein Skript ausgibt (unter Verwendung des source scriptname Befehl) im Skript festgelegte Variablen bleiben für die Lebensdauer der Shell bestehen.

Lösung 2:

Beide scheinen gut zu funktionieren, aber die Verwendung von export stellt sicher, dass die Variable für Subshells und andere Programme verfügbar ist. Probieren Sie dies aus, um dies zu testen.

Fügen Sie diese beiden Zeilen zu Ihrer .bashrc-Datei hinzu

TESTVAR="no export"
export MYTESTVAR="with export"

Öffnen Sie dann eine neue Shell.

Ausführen von echo $TESTVAR und echo $MYTESTVAR zeigt den Inhalt jeder Variablen an. Entfernen Sie nun in derselben Shell diese beiden Zeilen aus Ihrer .bashrc-Datei und führen Sie bash aus um eine Subshell zu starten.

Ausführen von echo $TESTVAR wird eine leere Ausgabe haben, aber echo $MYTESTVAR ausführen wird "mit Export" angezeigt


Linux
  1. Was ist der beste distro-/shellunabhängige Weg, um Umgebungsvariablen festzulegen?

  2. Wenn Prozesse die Umgebung des übergeordneten Elements erben, warum brauchen wir dann den Export?

  3. Wo wird die Term-Umgebungsvariable Default gesetzt?

  4. Beispiele für Linux-Exportbefehle (Festlegen von Umgebungsvariablen)

  5. Wie groß darf der Wert einer Linux-Umgebungsvariablen maximal sein?

Was ist die Shell unter Linux?

So setzen Sie die Umgebungsvariable in Bash

So legen Sie eine Benutzerumgebungsvariable fest (dauerhaft, nicht Sitzung)?

Wie setze ich eine Umgebungsvariable in der Befehlszeile und lasse sie in Befehlen erscheinen?

Was ist Subshell in Linux?

Was ist der richtige Speicherort für die PS1-Shell-Variable?