Umgebungsvariablen in Linux

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Willkommen in diesem praktischen Lab (Workshop) über Umgebungsvariablen in Linux! Umgebungsvariablen sind dynamische Werte, die das Verhalten laufender Prozesse auf einem Computer beeinflussen können. Sie spielen eine entscheidende Rolle bei der Systemkonfiguration und Programmausführung. Indem Sie Umgebungsvariablen beherrschen, erwerben Sie essentielle Fähigkeiten für die Linux-Systemadministration und die Softwareentwicklung.

In diesem Lab werden Sie lernen, wie Sie Umgebungsvariablen erstellen, anzeigen, ändern und löschen. Wir werden auch untersuchen, wie Sie diese Änderungen dauerhaft machen können und einige der wichtigsten integrierten Umgebungsvariablen in Linux verstehen. Egal, ob Sie ein Anfänger sind oder Ihre Kenntnisse festigen möchten, dieses Lab wird Ihnen wertvolle praktische Erfahrungen bieten.

Lassen Sie uns beginnen!

Grundlegendes Verständnis von Variablen in Linux

Bevor wir uns den Umgebungsvariablen zuwenden, beginnen wir mit den grundlegenden Shell-Variablen. Dies wird Ihnen helfen, das Konzept von Variablen in Linux zu verstehen.

  1. Öffnen Sie Ihr Terminal. Sie sollten sich im Verzeichnis /home/labex/project befinden. Wenn nicht, können Sie in dieses Verzeichnis wechseln, indem Sie den folgenden Befehl verwenden:

    cd /home/labex/project
  2. Jetzt erstellen wir eine einfache Shell-Variable. In Linux können Sie eine Variable erstellen, indem Sie einfach einem Namen einen Wert zuweisen. Erstellen wir eine Variable namens my_var:

    my_var="Hello, Linux"

    Wichtiger Hinweis: Wenn Sie in Bash (und Zsh, das wir in diesem Lab verwenden) Variablen zuweisen, sollten keine Leerzeichen um das Gleichheitszeichen (=) stehen. my_var = "Hello, Linux" oder my_var= "Hello, Linux" werden einen Fehler verursachen.

  3. Um den Wert der Variable anzuzeigen, verwenden wir den echo-Befehl mit einem $ vor dem Variablennamen. Das $ teilt der Shell mit, den Wert der Variable einzusetzen:

    echo $my_var

    Sie sollten die folgende Ausgabe sehen:

    Hello, Linux
  4. Sie können Variablen auch in anderen Befehlen oder Zuweisungen verwenden. Beispielsweise:

    echo "The value of my_var is: $my_var"

    Dies wird die Ausgabe The value of my_var is: Hello, Linux erzeugen.

Gut gemacht! Sie haben gerade Ihre erste Shell-Variable erstellt und verwendet. Diese Variable ist jedoch nur in der aktuellen Shell-Sitzung verfügbar. Wenn Sie ein neues Terminalfenster oder -Tab öffnen, ist diese Variable dort nicht verfügbar. Hier kommen die Umgebungsvariablen ins Spiel.

Einführung in Umgebungsvariablen

Nachdem wir nun die grundlegenden Variablen verstanden haben, wollen wir uns den Umgebungsvariablen zuwenden. Umgebungsvariablen sind Variablen, die für alle Kindprozesse der Shell verfügbar sind. Das bedeutet, dass Skripte und Programme, die aus dieser Shell heraus gestartet werden, auf sie zugreifen können.

  1. Um alle aktuellen Umgebungsvariablen anzuzeigen, verwenden Sie den env-Befehl:

    env

    Dies wird eine lange Liste von Variablen anzeigen. Sorgen Sie sich nicht, wenn Sie noch nicht alle verstehen - wir werden später einige der wichtigsten behandeln.

  2. Eine der wichtigsten Umgebungsvariablen ist PATH. Schauen wir uns diese genauer an:

    echo $PATH

    Die PATH-Variable listet Verzeichnisse auf, in denen das System nach ausführbaren Programmen sucht. Jedes Verzeichnis wird durch einen Doppelpunkt (:) getrennt.

  3. Jetzt erstellen wir unsere eigene Umgebungsvariable. Wir verwenden den export-Befehl, um eine Umgebungsvariable zu erstellen:

    export MY_ENV_VAR="This is an environment variable"

    Der export-Befehl macht die Variable für Kindprozesse verfügbar. Dies ist der Hauptunterschied zwischen Shell-Variablen und Umgebungsvariablen.

  4. Um den Unterschied zu veranschaulichen, erstellen wir ein Shell-Skript, das versucht, sowohl auf eine normale Shell-Variable als auch auf eine Umgebungsvariable zuzugreifen:

    echo '#!/bin/bash
    echo "Shell variable: $my_var"
    echo "Environment variable: $MY_ENV_VAR"' > test_vars.sh

    Machen Sie das Skript ausführbar:

    chmod +x test_vars.sh

    Führen Sie nun das Skript aus:

    ./test_vars.sh

    Sie sollten feststellen, dass die Umgebungsvariable (MY_ENV_VAR) zugänglich ist, während die Shell-Variable (my_var) es nicht ist. Dies liegt daran, dass my_var nicht exportiert wurde, sodass Kindprozesse (wie das Skript) nichts von ihr wissen.

  5. Um zu überprüfen, dass MY_ENV_VAR nun eine Umgebungsvariable ist, können wir erneut den env-Befehl verwenden, aber diesmal filtern wir die Ausgabe mit grep:

    env | grep MY_ENV_VAR

    Sie sollten Ihre neue Variable in der Ausgabe sehen.

  6. Sie können auch direkt den Wert Ihrer neuen Umgebungsvariable überprüfen:

    echo $MY_ENV_VAR

Exzellent! Sie haben nun Ihre erste Umgebungsvariable erstellt und gesehen, wie sie sich von einer Shell-Variablen unterscheidet. Der Hauptunterschied besteht darin, dass Umgebungsvariablen, die mit export erstellt werden, für Kindprozesse verfügbar sind, während Shell-Variablen dies nicht sind.

Umgebungsvariablen und Shell-Variablen haben jeweils ihren eigenen Geltungsbereich. Wenn Sie eine Variable exportieren (z.B. export MY_ENV_VAR="something"), wird sie für alle Subprozesse verfügbar, die aus dieser Shell heraus gestartet werden (z.B. ein Shell-Skript, das von derselben Shell ausgeführt wird). Wenn Sie jedoch eine völlig separate Shell-Sitzung öffnen, erbt diese Sitzung nicht die Variablen aus Ihrer aktuellen Shell, es sei denn, Sie setzen sie speziell in einer Startdatei (wie .zshrc oder .bashrc).

Mit anderen Worten:

  • Eine normale Shell-Variable ist nur innerhalb der aktuellen Sitzung sichtbar.
  • Eine exportierte Variable ist für Kindprozesse, die aus dieser Sitzung heraus gestartet werden, verfügbar.
  • Eine Variable, die in einer Shell-Startdatei (wie .zshrc) festgelegt wird, wird auf alle neuen Sitzungen dieser Shell angewendet.

Sie können nicht direkt auf die Variablen eines anderen Benutzers oder einer anderen Shell zugreifen, da jeder Prozess seine eigene Umgebung verwaltet. Wenn Sie eine neue Shell starten, erhält diese eine Kopie der exportierten Variablen des übergeordneten Prozesses, aber nicht die Variablen, die nur in der ursprünglichen Shell ohne export festgelegt wurden.

Wir werden in den folgenden Schritten lernen, wie man Umgebungsvariablen dauerhaft festlegt.

Modifizieren der PATH-Umgebungsvariablen

Die PATH-Variable ist eine der wichtigsten Umgebungsvariablen in Linux. Sie teilt dem System mit, wo es nach ausführbaren Dateien suchen soll. Lassen Sie uns sie so modifizieren, dass ein neues Verzeichnis hinzugefügt wird.

  1. Zunächst erstellen wir ein neues Verzeichnis, in dem wir benutzerdefinierte Skripte speichern können:

    mkdir ~/my_scripts

    Dies erstellt ein Verzeichnis namens my_scripts in Ihrem Home-Verzeichnis. Das Symbol ~ ist eine Abkürzung für den Pfad zu Ihrem Home-Verzeichnis, das in diesem Lab /home/labex ist.

  2. Jetzt fügen wir dieses neue Verzeichnis Ihrer PATH-Variable hinzu. Wir verwenden den export-Befehl, diesmal aber modifizieren wir eine vorhandene Variable:

    export PATH="$PATH:$HOME/my_scripts"

    Lassen Sie uns dies aufschlüsseln:

    • $PATH ist der aktuelle Wert der PATH-Umgebungsvariablen. Wir verwenden den vorhandenen Wert und fügen etwas hinzu.
    • : wird verwendet, um Verzeichnisse in der PATH-Variable zu trennen. Wenn Sie den Doppelpunkt weglassen, kann die Shell keine ausführbaren Dateien in Ihrem hinzugefügten Verzeichnis finden.
    • $HOME ist eine Umgebungsvariable, die auf Ihr Home-Verzeichnis zeigt (in unserem Fall wieder /home/labex).
    • Wir hängen also :$HOME/my_scripts an die vorhandene PATH-Variable an. Dies teilt dem System mit, dass es nach ausführbaren Dateien in my_scripts suchen soll, nachdem es die Verzeichnisse in der ursprünglichen PATH-Variable durchsucht hat.
  3. Überprüfen Sie, ob das neue Verzeichnis hinzugefügt wurde:

    echo $PATH

    Sie sollten /home/labex/my_scripts am Ende der Ausgabe sehen. Wenn es nicht am Ende steht, haben Sie es möglicherweise auf andere Weise modifiziert, was in Ordnung ist, aber der Pfad /home/labex/my_scripts sollte dennoch in Ihrer PATH-Variable enthalten sein.

  4. Um dies zu testen, erstellen wir ein einfaches Skript in unserem neuen Verzeichnis:

    echo '#!/bin/bash
    echo "Hello from my custom script!"' > ~/my_scripts/hello.sh

    Dies erstellt ein Shell-Skript namens hello.sh im Verzeichnis ~/my_scripts. Die erste Zeile, #!/bin/bash, teilt dem System mit, dass es sich um ein Bash-Skript handelt, sodass es als Programm ausgeführt werden kann.

  5. Machen Sie das Skript ausführbar:

    chmod +x ~/my_scripts/hello.sh

    Der Befehl chmod +x fügt dem Skript die Ausführungsrechte hinzu, sodass es als Programm ausgeführt werden kann. Wenn Sie diesen Schritt nicht ausführen, erhalten Sie eine "Zugriff verweigert"-Fehlermeldung, wenn Sie versuchen, es auszuführen.

  6. Jetzt sollten Sie in der Lage sein, dieses Skript von überall aus auszuführen, indem Sie einfach seinen Namen eingeben:

    hello.sh

    Wenn alles korrekt funktioniert hat, sollten Sie sehen: Hello from my custom script!

Dies funktioniert, weil wir das Verzeichnis my_scripts zur PATH-Variable hinzugefügt haben. Wenn Sie einen Befehl eingeben, sucht die Shell in jeder der in der PATH-Variable aufgeführten Verzeichnisse nacheinander nach einer ausführbaren Datei mit diesem Namen. Indem wir my_scripts zur PATH-Variable hinzugefügt haben, haben wir der Shell gesagt, dass sie dort auch nach ausführbaren Dateien suchen soll.

Um dies zu demonstrieren, versuchen Sie, in ein anderes Verzeichnis zu wechseln und das Skript erneut auszuführen:

cd /tmp
hello.sh

Sie werden feststellen, dass das Skript immer noch ausgeführt wird, auch wenn Sie sich nicht im Verzeichnis befinden, in dem es gespeichert ist. Dies ist die Stärke der PATH-Variable - sie ermöglicht es Ihnen, ausführbare Dateien von überall im System aus auszuführen, solange sie sich in einem in der PATH-Variable aufgeführten Verzeichnis befinden.

Gut gemacht! Sie haben die PATH-Umgebungsvariable erfolgreich modifiziert und ein benutzerdefiniertes Skript erstellt, das von überall aus ausgeführt werden kann.

Dauerhaftes Festlegen von Umgebungsvariablen

Die von uns festgelegten Umgebungsvariablen gehen verloren, wenn Sie das Terminal schließen. Um sie dauerhaft zu machen, müssen wir sie einer Shell-Konfigurationsdatei hinzufügen. Die genaue Datei hängt davon ab, welche Shell Sie verwenden.

In dieser Lab-Umgebung verwenden wir die Z Shell (zsh), eine erweiterte Version der Bourne Shell (sh) mit vielen Verbesserungen, einschließlich einiger Funktionen von Bash, ksh und tcsh. Zsh hat an Popularität gewonnen und ist jetzt die Standard-Shell in macOS.

Wenn Sie Bash verwenden würden (die immer noch die Standard-Shell auf vielen Linux-Distributionen ist), würden Sie .bashrc ändern. Da wir jedoch Zsh verwenden, werden wir .zshrc ändern. Es ist sehr wichtig, die richtige Datei zu verwenden. Wenn Sie.bashrc ändern, während Sie zsh verwenden, werden die Variablen nicht festgelegt.

  1. Öffnen Sie die .zshrc-Datei in Ihrem Home-Verzeichnis mit einem Texteditor. Wir verwenden nano, einen einfachen terminalbasierten Texteditor:

    nano ~/.zshrc

    Dieser Befehl öffnet die ~/.zshrc-Datei, wobei ~ wieder eine Abkürzung für Ihr Home-Verzeichnis /home/labex ist. Wenn die .zshrc-Datei nicht existiert, wird nano eine neue erstellen. Diese Datei wird jedes Mal ausgeführt, wenn Sie eine neue Terminal-Sitzung starten.

  2. Scrollen Sie ans Ende der Datei (Sie können die Pfeiltasten verwenden) und fügen Sie die folgenden Zeilen hinzu:

    export MY_ENV_VAR="This is an environment variable"
    export PATH="$PATH:$HOME/my_scripts"

    Stellen Sie sicher, dass Sie diese Zeilen an das Ende der Datei hinzufügen. Achten Sie darauf, dass die Rechtschreibung und die Syntax korrekt sind, insbesondere dass es keine Leerzeichen um das =-Zeichen gibt.

  3. Speichern Sie die Datei und verlassen Sie den Editor. In nano tun Sie dies, indem Sie Ctrl+X drücken, dann Y (um zu speichern) und dann Enter.

  4. Um diese Änderungen anzuwenden, ohne das Terminal neu zu starten, verwenden Sie den source-Befehl:

    source ~/.zshrc

    Der source-Befehl liest und führt Befehle aus der als Argument angegebenen Datei in der aktuellen Shell-Umgebung aus. Dies unterscheidet sich von der einfachen Ausführung der Datei mit bash ~/.zshrc, was das Skript in einer neuen Shell ausführen würde und die aktuelle nicht beeinflussen würde. source führt es in der aktuellen Shell aus, sodass Ihre Änderungen sofort wirksam werden. Wenn Sie diesen Schritt überspringen, werden Ihre Änderungen in Ihrem aktuellen Terminal nicht wirksam werden, und Sie müssen es schließen und erneut öffnen, um die Änderungen zu sehen.

Jetzt werden diese Umgebungsvariablen jedes Mal festgelegt, wenn Sie ein neues Terminal öffnen. Dies ist äußerst nützlich, um Ihre Entwicklungsumgebung konsistent einzurichten.

Grundlegendes Verständnis wichtiger Umgebungsvariablen

Linux verfügt über mehrere integrierte Umgebungsvariablen, die für den Betrieb des Systems von entscheidender Bedeutung sind. Lassen Sie uns einige davon näher betrachten:

  1. HOME: Zeigt auf das Home-Verzeichnis des aktuellen Benutzers.

    echo $HOME
  2. USER: Enthält den Benutzernamen des aktuellen Benutzers.

    echo $USER
  3. SHELL: Gibt die Standard-Shell des Benutzers an.

    echo $SHELL
  4. PWD: Steht für "Print Working Directory" (Aktuelles Arbeitsverzeichnis ausgeben). Sie enthält den Pfad des aktuellen Verzeichnisses.

    echo $PWD
  5. TERM: Gibt den Typ des Terminals an, das emuliert werden soll, wenn die Shell ausgeführt wird.

    echo $TERM

Das Verständnis dieser Variablen kann Ihnen helfen, Ihre Linux-Umgebung besser zu navigieren und zu steuern.

Entfernen von Umgebungsvariablen

Manchmal müssen Sie möglicherweise eine Umgebungsvariable entfernen. Dies wird mit dem unset-Befehl durchgeführt.

  1. Zunächst überprüfen wir, ob unsere MY_ENV_VAR noch festgelegt ist:

    echo $MY_ENV_VAR

    Sie sollten den Wert sehen, den wir zuvor festgelegt haben.

  2. Um diese Variable zu entfernen, verwenden Sie den unset-Befehl:

    unset MY_ENV_VAR
  3. Überprüfen Sie, ob die Variable entfernt wurde:

    echo $MY_ENV_VAR

    Sie sollten keine Ausgabe sehen, was darauf hinweist, dass die Variable nicht mehr existiert.

  4. Sie können auch die -v-Option mit unset verwenden, um sicherzustellen, dass Sie eine Variable und nicht eine Shell-Funktion entfernen:

    unset -v MY_ENV_VAR

    Dies hat das gleiche Ergebnis wie das einfache Ausführen von unset MY_ENV_VAR.

Denken Sie daran, dass die Variable, wenn Sie sie Ihrer .zshrc-Datei hinzugefügt haben, beim nächsten Öffnen eines Terminals oder beim Ausführen der .zshrc-Datei mit source erneut erstellt wird.

Zusammenfassung

Herzlichen Glückwunsch! Sie haben dieses umfassende Lab zu Linux-Umgebungsvariablen abgeschlossen. Lassen Sie uns zusammenfassen, was Sie gelernt haben:

  1. Sie haben einfache Shell-Variablen erstellt und darauf zugegriffen und deren Gültigkeitsbereich verstanden.
  2. Sie haben gelernt, was Umgebungsvariablen sind und wie sie sich von Shell-Variablen unterscheiden, insbesondere in Bezug auf ihre Zugänglichkeit für Kindprozesse, und wie der export-Befehl hierfür von entscheidender Bedeutung ist.
  3. Sie haben die wichtige PATH-Variable modifiziert, um ein benutzerdefiniertes Verzeichnis hinzuzufügen, sodass Sie Skripte von überall im System aus ausführen können, und die Wichtigkeit des Doppelpunkts : zum Trennen von Einträgen verstanden.
  4. Sie haben Umgebungsvariablen dauerhaft gemacht, indem Sie sie der .zshrc-Datei hinzugefügt haben, den Unterschied zwischen Bash- und Zsh-Shell-Konfigurationen verstanden und die Bedeutung des source-Befehls zum Anwenden von Änderungen erkannt.
  5. Sie haben einige der wichtigsten integrierten Umgebungsvariablen in Linux kennengelernt.
  6. Schließlich haben Sie gelernt, wie Sie Umgebungsvariablen mit dem unset-Befehl entfernen können.

Diese Fähigkeiten sind grundlegend für die Linux-Systemadministration und die Softwareentwicklung. Mit Umgebungsvariablen können Sie Ihr System und Ihre Anwendungen flexibel konfigurieren. Wenn Sie weiterhin mit Linux arbeiten, werden Sie unzählige Verwendungsmöglichkeiten für Umgebungsvariablen in Skripten, der Entwicklung und der Systemkonfiguration finden.

Denken Sie daran, Übung macht den Meister. Versuchen Sie, eigene Umgebungsvariablen für verschiedene Zwecke zu erstellen, und erkunden Sie, wie verschiedene Anwendungen und Skripte Umgebungsvariablen nutzen, um ihr Verhalten zu steuern. Viel Spaß beim Lernen!