M. Garrels. Bash-Handbuch

2.2. Umgebungsvariablen

Das Betriebssystem verwaltet eine spezielle Art von Ressource namens Umgebungsvariablen (Umgebungsvariablen). Diese Variablen sind ein Paar NAME - WERT . Der Name kann mit einem Buchstaben beginnen und aus Buchstaben, Ziffern und Unterstrichen bestehen.

Um den Wert einer Variablen in der Befehlszeile zu ersetzen, wird dem Variablennamen ein $-Zeichen vorangestellt:

$ echo $USER Gast

Wenn die Variable nicht gesetzt ist, wird ein leerer String zurückgegeben.

Eine Zuweisungsanweisung wird verwendet, um den Wert einer Variablen festzulegen (im Fall von Bourne-ähnlichen Shells):

$ TEST=testen

oder die eingebaute set-Anweisung (im Fall von C-likes):

$ setze TEST=test

Der set-Befehl ohne Argumente listet die Werte aller in der Umgebung gesetzten Variablen auf:

$ set COLUMNS=197 CVS_RSH=ssh DIRSTACK=() EUID=1000 GROUPS=() G_BROKEN_FILENAMES=1 HISTFILE=/home/guest/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 HOME=/home/guest HOSTNAME=myhost HOSTTYPE=i686 IFS =$" \t\n" INPUTRC=/etc/inputrc KDEDIR=/usr KDEDIRS=/home/guest/.local/ KDE_IS_PRELINKED=1 KDE_NO_IPV6=1 LANG=ru_RU.UTF-8 LESSOPEN="|/usr/bin/ lesspipe.sh %s" LINES=65 LOGNAME=Gast ....

Variablen können für einen bestimmten Prozess lokal oder für eine Sitzung global sein. Sie können lokale Werte für Variablen festlegen, indem Sie ihnen Befehle voranstellen:

$ TEST=test1 sh -c "echo $TEST" test1

Sie können den Inhalt eines Satzes von Variablen für eine Sitzung auswerten, indem Sie den eingebauten Befehl des env-Interpreters aufrufen, im Fall von Bourne-ähnlichen Interpretern (sh, ksh, bash, zsh, pdksh ...) und printenv im Fall der Verwendung von C-Shell-Klon-Interpretern (csh, tcsh. ..):

$ env HOSTNAME=myhost TERM=xterm SHELL=/bin/bash HISTSIZE=1000 KDE_NO_IPV6=1 SSH_CLIENT=172.16.0.9 50487 22 QTDIR=/usr/lib/qt-3.3 QTINC=/usr/lib/qt-3.3/include SSH_TTY =/dev/pts/6 USER=guest MOZILLA_CERTIFICATE_FOLDER=/home/guest/.evolution/ KDEDIR=/usr MAIL=/var/spool/mail/guest PATH=/usr/games:/usr/local/bin:/bin :/usr/bin:/home/guest/bin INPUTRC=/etc/inputrc PWD=/home/guest KDE_IS_PRELINKED=1 LANG=ru_RU.UTF-8 KDEDIRS=/home/guest/.local/ SSH_ASKPASS=/usr/libexec /openssh/gnome-ssh-askpass SHLVL=1 HOME=/home/guest LOGNAME=guest QTLIB=/usr/lib/qt-3.3/lib CVS_RSH=ssh SSH_CONNECTION=172.16.0.9 50487 172.16.2.9 22 LESSOPEN=|/usr /bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/bin/env

Befehlssätze Hülse können in Batch-Dateien namens Skripte eingebunden werden, wobei die erste Zeile in einer speziellen Art von Kommentar den Befehlsinterpreter zum Ausführen dieses Satzes angibt. Erstellen wir beispielsweise eine Datei in einem Texteditor namens test mit folgendem Inhalt:

#!/bin/sh echo TEST-Variable: echo $TEST

Dieses Programm wird ausgegeben Standardausgabe die Textnachricht "Variable TEST: " und den Wert der Variablen TEST, falls diese gesetzt ist. Führen Sie es aus Befehlszeile Sie können es als Parameter an die Shell übergeben:

$ sh test Variable TEST:

Sie können eine Variable global machen, indem Sie die Anweisung export (Bourne) oder setenv (C-SHell) verwenden:

$ export TEST=test1 $ sh test Variable TEST: test1

Sie können lokale Werte von Variablen für die Ausführung dieses Programms festlegen, indem Sie ihnen Befehle voranstellen:

$ TEST=test2 sh test Variable TEST: test2

Umgebungsvariablen werden mit der unset-Anweisung entfernt.

Umgebungsvariablen sind spezielle Variablen, die in der Shell definiert werden und zur Laufzeit von Programmen oder Skripten benötigt werden. Sie können vom System oder vom Benutzer definiert werden. Systemdefinierte Variablen sind solche, die vom System festgelegt werden.

Zum Beispiel Befehl PWD ist eine sehr häufige Systemvariable, die zum Speichern des aktuellen Arbeitsverzeichnisses verwendet wird. Benutzervariablen werden normalerweise entweder temporär für die aktuelle Shell oder dauerhaft gesetzt. Das gesamte Konzept der Konfiguration und Änderung von Umgebungseinstellungen dreht sich um eine Reihe von Dateien und ein paar Befehle und verschiedene Shells.

Genauer gesagt kann eine Umgebungsvariable drei Typen haben:

1. Lokale Umgebungsvariable

Es wird für die aktuelle Sitzung definiert. Diese Umgebungsvariablen werden für die Dauer der aktuellen Sitzung verwendet, unabhängig davon, ob es sich um eine Remote-Anmeldesitzung oder eine lokale Terminalsitzung handelt. Diese Variablen werden in keiner Konfigurationsdatei angegeben und werden mit einem speziellen Befehlssatz erstellt und entfernt.

2. Benutzerumgebungsvariable

Dies sind benutzerspezifische Variablen, die jedes Mal geladen werden, wenn sich der Benutzer über eine lokale Terminalsitzung oder über eine Remote-Anmeldesitzung anmeldet. Diese Variablen werden normalerweise aus den folgenden Konfigurationsdateien gesetzt und geladen: .bashrc,.bash_profile,.bash_login,.Profil, die im Home-Verzeichnis des Benutzers vorhanden sind.

3. Systemumgebungsvariablen

Dies sind Umgebungsvariablen, die systemweit verfügbar sind, d. h. für alle Benutzer, die auf diesem System vorhanden sind. Diese Variablen sind in den systemweiten Konfigurationsdateien vorhanden, die sich in den folgenden Verzeichnissen und Dateien befinden: /etc/umgebung,/etc/profile, /etc/profile.d/, /etc/bash.bashrc. Diese Variablen werden jedes Mal geladen, wenn das System eingeschaltet wird und Benutzer sich entweder lokal oder remote anmelden.

Grundlegendes zu gemeinsam genutzten und systemweiten Konfigurationsdateien

Hier werden wir kurz die verschiedenen oben aufgeführten Konfigurationsdateien beschreiben, die sowohl System- als auch Benutzerumgebungsvariablen enthalten.

.bashrc

Diese Datei ist eine Benutzerdatei, die jedes Mal geladen wird, wenn der Benutzer eine neue lokale Sitzung erstellt, d. h. in einfachen Worten, öffnet ein neues Terminal. Alle in dieser Datei erstellten Umgebungsvariablen werden jedes Mal wirksam, wenn eine neue lokale Sitzung gestartet wird.

.bash_profile

Die in dieser Datei aufgelisteten Umgebungsvariablen werden jedes Mal aufgerufen, wenn sich ein Benutzer remote anmeldet, also mit dem Befehl sch. Wenn diese Datei nicht existiert, sucht das System nach Dateien .bash_login oder .Profil.

/etc/umgebung

Diese Datei ist eine Systemdatei zum Erstellen, Bearbeiten oder Löschen von Umgebungsvariablen. Die in dieser Datei erstellten Umgebungsvariablen sind im gesamten System für jeden Benutzer global verfügbar, sowohl lokal als auch remote.

/etc/bash.bashrc

Systemdatei bashrc. Diese Datei wird einmal pro Benutzer heruntergeladen, jedes Mal, wenn der Benutzer eine lokale Terminalsitzung öffnet. In dieser Datei erstellte Umgebungsvariablen stehen allen Benutzern zur Verfügung, jedoch nur über eine lokale Terminalsitzung. Wenn ein Benutzer auf diesem Computer über eine Remote-Anmeldesitzung gelöscht wird, sind diese Variablen nicht sichtbar.

/etc/profil

Alle in dieser Datei erstellten Variablen stehen jedem Benutzer im System zur Verfügung, aber nur, wenn diese Benutzersitzung remote aufgerufen wird, dh über eine Remote-Anmeldung. Keine Variable in dieser Datei ist für die lokale Anmeldesitzung verfügbar, d. h. wenn der Benutzer ein neues Terminal auf seinem lokalen System öffnet.

Notiz. Umgebungsvariablen, die mit systemweiten oder benutzerdefinierten Konfigurationsdateien erstellt wurden, können gelöscht werden, aber Sie können dies nur aus diesen Dateien tun. Melden Sie sich direkt nach jeder Änderung an diesen Dateien entweder ab oder wieder an oder geben Sie einfach den folgenden Befehl auf dem Terminal ein, damit die Änderungen wirksam werden:

$ Quelle

Festlegen oder Entfernen von lokalen oder Sitzungsumgebungsvariablen in Linux

Lokale Umgebungsvariablen können mit den folgenden Befehlen erstellt werden:

$ var=Wert ODER $ export var=Wert

Diese Variablen sind Sitzungsvariablen und gelten nur für die aktuelle Terminalsitzung. Um diese Umgebungsvariablen zu löschen, können Sie die folgenden Befehle verwenden:

1. Verwendung env

Der Standardbefehl ist " env» listet alle aktuellen Umgebungsvariablen auf. Aber bei Verwendung mit der Taste " -ich“, löscht es vorübergehend alle Umgebungsvariablen und ermöglicht dem Benutzer, den Befehl in der aktuellen Sitzung auszuführen, wenn keine Umgebungsvariablen vorhanden sind.

$ env -i ... Befehlsargumente ...

Hier stimmt var = value mit jedem lokalen überein Umgebungsvariable, die Sie nur mit diesem Befehl verwenden möchten.

$ env -i bash

Wir starten die Bash-Shell, in der alle Umgebungsvariablen vorübergehend gelöscht werden. Aber wenn Sie die Shell verlassen, werden alle Variablen wiederhergestellt.

2. Mit Abbrechen

Eine andere Möglichkeit, eine lokale Umgebungsvariable zu löschen, ist die Verwendung des Befehls ungesetzt. Um eine lokale Umgebungsvariable vorübergehend zu deaktivieren,

$unset

Wo, var-name ist der Name der lokalen Variablen, die Sie löschen oder löschen möchten.

3. Stellen Sie mit den Variablennamen ein leerer Wert

Eine andere weniger beliebte Methode besteht darin, den Namen der Variablen, die Sie löschen möchten, auf einen leeren Wert zu setzen, d.h. VAR=(es gibt nichts nach gleich - drücken Sie die Eingabetaste). Dadurch wird der Wert der lokalen Variablen für die aktuelle Sitzung gelöscht, für die sie aktiv ist.

NOTIZ. SIE KÖNNEN DIE SYSTEMVARIABLEN ÄNDERN, ABER DIE ÄNDERUNGEN WERDEN NUR IN DER AKTUELLEN SITZUNG WIEDERGELEGT UND SIND NICHT DAUERHAFT.

Erfahren Sie, wie Sie Benutzer- und Systemumgebungsvariablen in Linux erstellen

In diesem Abschnitt werden wir anhand der folgenden Beispiele untersuchen, wie lokale, Benutzer- und Systemumgebungsvariablen in Linux festgelegt oder deaktiviert werden:

1. Lokale Variablen in Linux setzen und entfernen.

a) Hier erstellen wir eine lokale Variable VAR1 und auf einen beliebigen Wert setzen. Wir verwenden dann ungesetzt und am Ende löschen wir diese Variable.

$ VAR1="TecMint ist die beste Seite für Linux-Artikel" $ echo $VAR1 $ unset VAR1 $ echo $VAR1

b) Eine andere Möglichkeit, eine lokale Variable zu erstellen, ist die Verwendung des Befehls Export. Die erstellte lokale Variable steht für die aktuelle Sitzung zur Verfügung. Um eine Variable zu deaktivieren, setzen Sie die Variable einfach auf einen leeren Wert.

$ export VAR="TecMint ist die beste Site für Linux-Artikel" $ echo $VAR $ VAR= $ echo $VAR

c) Hier haben wir eine lokale Variable erstellt VAR2 und seinen Wert festlegen. Um dann den Befehl auszuführen und alle lokalen und anderen Umgebungsvariablen vorübergehend zu löschen, haben wir den Befehl " env -ich". Dieser Befehl hier startete eine Shell bash, alle anderen Umgebungsvariablen löschen. Nach Eingabe von " Ausfahrt» in der aufgerufenen Shell bash Alle Variablen werden wiederhergestellt.

$ VAR2="TecMint ist die beste Site für Linux-Artikel" $ echo $VAR2 $ env -i bash $ echo $VAR2

2. Setzen und Entfernen von Benutzerumgebungsvariablen in Linux.

a) Ändern Sie die Datei .bashrc in Ihrem Home-Verzeichnis, um die Umgebungsvariable, die Sie hinzufügen möchten, zu exportieren oder festzulegen. Führen Sie danach die Datei aus, damit die Änderungen wirksam werden. Dann sehen Sie die Variable ("CD" in meinem Fall), die wirksam geworden ist. Diese Variable ist jedes Mal verfügbar, wenn Sie ein neues Terminal für diesen Benutzer öffnen, jedoch nicht für Remote-Anmeldesitzungen.

$ vi .bashrc

.bashrc.

Export CD="Dies ist TecMint Home"

Führen Sie nun den folgenden Befehl aus, damit die neuen Änderungen wirksam werden, und testen Sie die Variable.

$ Quelle .bashrc $ echo $CD

Um diese Variable zu entfernen, löschen Sie einfach die Zeile in der Datei. bashrc und betreten Sie die Shell erneut.

b) Um eine Variable hinzuzufügen, die für Remote-Anmeldesitzungen verfügbar ist, ändern Sie die Datei .bash_profile.

$ vi .bash_profile

Fügen Sie der Datei die folgende Zeile hinzu .bash_profile.

Export VAR2="Das ist TecMint Home"

Die Variable ist verfügbar, wenn Sie remote mit ausführen sch Anmeldung für diesen Benutzer, aber nicht beim Öffnen eines neuen lokalen Terminals.

$ Quelle .bash_profile $ Echo $ Var2

Hier VAR2 anfänglich nicht verfügbar, aber wenn Sie sich aus der Ferne anmelden sch Benutzer an lokaler Host, Die Variable wird verfügbar.

$ssh $echo $var2

Um diese Variable zu entfernen, entfernen Sie einfach die Zeile in der Datei .bash_profile die Sie hinzugefügt haben, und lesen Sie die Datei erneut.

NOTIZ. Diese Variablen sind bei jeder Anmeldung für den aktuellen Benutzer verfügbar, aber nicht für andere Benutzer.

3. Setzen und Entfernen von Systemumgebungsvariablen in Linux.

a) Um eine Nicht-Login-Systemvariable hinzuzufügen (d. h. eine, die allen Benutzern zur Verfügung steht, wenn einer von ihnen ein neues Terminal öffnet, aber nicht, wenn dies der Fall ist Fernzugriff Benutzer des Computers) fügen Sie diese Variable der Datei hinzu /etc/bash.bashrc.

Export VAR="Dies ist eine systemweite Variable"

Lesen Sie die Datei dann erneut ein.

$source /etc/bash.bashrc

Diese Variable steht nun jedem Benutzer zur Verfügung, wenn er ein neues Terminal öffnet.

$ echo $VAR $ sudo su $ echo $VAR $ su - $ echo $VAR

Hier ist die Variable sowohl für den Root-Benutzer als auch für den normalen Benutzer verfügbar. Sie können dies überprüfen, indem Sie sich als ein anderer Benutzer anmelden.

b) Wenn Sie möchten, dass eine Umgebungsvariable verfügbar ist, wenn sich einer der Benutzer auf Ihrem Computer remote angemeldet hat, aber kein neues Terminal geöffnet hat lokalen Computer, müssen Sie die Datei bearbeiten − /etc/profil .

Export VAR1="Dies ist eine systemweite Variable nur für Remote-Sitzungen"

Nachdem Sie die Variable hinzugefügt haben, lesen Sie die Datei einfach erneut ein. Dann ist die Variable verfügbar.

$source/etc/profile $echo $var1

Um diese Variable zu entfernen, entfernen Sie die Zeile aus der Datei /etc/profil und lies es nochmal.

c) Wenn Sie jedoch eine Variable zu einer beliebigen Umgebung hinzufügen möchten, in der Sie systemweit verfügbar sein möchten, sowohl für Remote-Anmeldesitzungen als auch für lokale Sitzungen für alle Benutzer, exportieren Sie einfach die Variable in /etc/umgebung.

Export VAR12="Ich bin überall verfügbar"

Lesen Sie danach die Datei erneut ein und die Änderungen werden wirksam.

$ source /etc/environment $ echo $VAR12 $ sudo su $ echo $VAR12 $ exit $ ssh localhost $ echo $VAR12

Hier können wir sehen, dass die Umgebungsvariable für den normalen Benutzer, den Root-Benutzer und auch für die Remote-Anmeldesitzung verfügbar ist.

Um diese Variable zu löschen, löschen Sie einfach den Eintrag in der Datei /etc/umgebung und lesen Sie die Datei erneut.

NOTIZ. Änderungen werden wirksam, wenn die Datei erneut gelesen wird /etc/umgebung. Aber wenn nicht, müssen Sie sich möglicherweise abmelden und erneut anmelden.

Stellen Sie Fragen zum Artikel in den Kommentaren unten.

Vielen Dank, dass Sie sich die Zeit genommen haben, den Artikel zu lesen!

Wenn Sie Fragen haben, stellen Sie sie in den Kommentaren.

Abonnieren Sie unsere Blog-Updates und bleiben Sie über die Neuigkeiten aus der Welt der Infokommunikation auf dem Laufenden!

Um mehr zu erfahren und sich mit Wissen von der Menge der IT-Leute abzuheben, melden Sie sich für Cisco-Kurse der Cisco Academy und Linux-Kurse des Linux Professional Institute an

  • Wir werden Sie nach einer geeigneten Zeit zum Üben und Anpassen fragen: Wir verstehen, dass die Zeit zum Lernen nicht ausreicht.
  • Wenn Sie einen individuellen Zeitplan wünschen, werden wir diesen besprechen und umsetzen.
  • Wir werden klare Fristen für die Selbstorganisation setzen. Ein persönlicher Kurator beantwortet Fragen, berät und motiviert Sie, die Fristen zum Bestehen der Prüfungen einzuhalten.
  • Wir helfen Ihnen auch:

    Umgebungsvariablen in Linux sind spezielle Variablen, die von der Shell definiert und von Programmen während der Ausführung verwendet werden. Sie können vom System und vom Benutzer definiert werden. Linux-Systemumgebungsvariablen werden vom System definiert und von Programmen auf Systemebene verwendet.

    Beispielsweise verwendet der Befehl PWD eine Systemvariable, um das alte Arbeitsverzeichnis beizubehalten. Benutzerumgebungsvariablen werden vom Benutzer für die aktuelle Shell vorübergehend oder dauerhaft festgelegt. Das gesamte Konzept des Hinzufügens und Entfernens von Shell-Variablen dreht sich um mehrere Dateien, Befehle und verschiedene Shells.

    Im weiteren Sinne kann eine Umgebungsvariable von drei Typen sein:

    1. Lokale Umgebungsvariablen

    Diese Variablen werden nur für die aktuelle Sitzung definiert. Sie werden nach dem Ende der Sitzung, sei es ein Fernzugriff oder ein Terminal-Emulator, dauerhaft gelöscht. Sie werden nicht in irgendwelchen Dateien gespeichert, sondern mit speziellen Befehlen erstellt und gelöscht.

    2. Benutzer-Shell-Variablen

    Diese Linux-Shell-Variablen werden für einen bestimmten Benutzer definiert und jedes Mal geladen, wenn sich der Benutzer über ein lokales Terminal anmeldet oder eine Remote-Verbindung herstellt. Solche Variablen werden normalerweise in Konfigurationsdateien gespeichert: .bashrc, .bash_profile, .bash_login, .profile oder andere Dateien, die sich im Verzeichnis des Benutzers befinden.

    3. Systemumgebungsvariablen

    Diese Variablen sind im gesamten System für alle Benutzer verfügbar. Sie werden beim Systemstart aus den Systemkonfigurationsdateien geladen: /etc/environment, /etc/profile, /etc/profile.d/ /etc/bash.bashrc.

    Konfigurationsdateien für Linux-Umgebungsvariablen

    Hier werfen wir einen kurzen Blick auf die verschiedenen oben aufgeführten Konfigurationsdateien, die verwendet werden, um Umgebungsvariablen für das gesamte System oder einen bestimmten Benutzer festzulegen.

    .bashrc

    Dies ist eine benutzerspezifische Variablendatei. Es wird jedes Mal geladen, wenn der Benutzer eine Terminalsitzung erstellt, dh mit anderen Worten ein neues Terminal öffnet. Alle in dieser Datei erstellten Umgebungsvariablen werden jedes Mal wirksam, wenn eine neue Terminalsitzung gestartet wird.

    .bash_profile

    Diese Variablen werden jedes Mal wirksam, wenn ein Benutzer eine Remote-Verbindung über SSH herstellt. Wenn diese Datei fehlt, sucht das System nach .bash_login oder .profile.

    /etc/umgebung

    Diese Datei dient zum Erstellen, Bearbeiten und Löschen von Umgebungsvariablen auf Systemebene. In dieser Datei erstellte Umgebungsvariablen sind für das gesamte System, für jeden Benutzer und sogar bei Remote-Verbindung verfügbar.

    /etc/bash.bashrc

    System-bashrc. Diese Datei wird für jeden Benutzer jedes Mal ausgeführt, wenn er eine neue Terminalsitzung erstellt. Dies funktioniert nur für lokale Benutzer, bei einer Verbindung über das Internet sind solche Variablen nicht sichtbar.

    /etc/profil

    Das Systemdateiprofil. Alle Variablen in dieser Datei stehen allen Benutzern im System nur dann zur Verfügung, wenn sie remote angemeldet sind. Sie sind jedoch nicht verfügbar, wenn Sie eine lokale Terminalsitzung erstellen, dh wenn Sie nur ein Terminal öffnen.

    Alle mit diesen Dateien erstellten Linux-Umgebungsvariablen können entfernt werden, indem Sie sie einfach von dort löschen. Nur nach jeder Änderung müssen Sie sich entweder abmelden und wieder anmelden oder diesen Befehl ausführen:

    Quelldateiname

    Hinzufügen von Benutzer- und Systemumgebungsvariablen in Linux

    Nun, da Sie ein wenig Theorie kennen, gehen wir zur Praxis über. Lokale Umgebungsvariablen in Linux können mit den folgenden Befehlen erstellt werden:

    var=wert
    $ export var=wert

    Diese Variablen sind nur für die aktuelle Terminalsitzung verfügbar.

    Mehrere Befehle können verwendet werden, um Umgebungsvariablen zu entfernen:

    1. Mit env

    Standardmäßig kann env verwendet werden, um alle gesetzten Umgebungsvariablen anzuzeigen. Mit der Option -i können Sie jedoch vorübergehend alle Shell-Variablen entfernen und den Befehl ohne Variablen ausführen.

    env -i Befehl

    Var ist eine beliebige Variable, die Sie an diesen Befehl übergeben möchten.

    Dieser Befehl startet eine Shell ohne Umgebungsvariablen:

    Nach dem Start einer solchen Umgebung sind keine Variablen verfügbar, aber nach dem Verlassen kehrt alles an seinen Platz zurück.

    2. Unset verwenden

    Dies ist eine weitere Möglichkeit, Linux-Umgebungsvariablen zu entfernen. Unset entfernt eine Variable nach Namen bis zum Ende der aktuellen Sitzung:

    variable_name aufheben

    3. Variablenwert auf "" setzen

    Dies ist der einfachste Weg, Umgebungsvariablen in Linux zu löschen. Indem Sie eine Variable auf leer setzen, löschen Sie sie für den Rest der aktuellen Sitzung.

    Hinweis: Mit diesen Methoden können Sie die Werte von System- oder Benutzervariablen ändern, sie sind jedoch nur für die aktuelle Sitzung relevant.

    Erstellen von Benutzer- und Systemumgebungsvariablen

    In diesem Abschnitt sehen wir uns an, wie System- und Benutzervariablen nicht nur für die aktuelle Sitzung gesetzt und entfernt werden, sondern auch, damit der Effekt nach einem Neustart bestehen bleibt.

    1. Setzen und entfernen Sie lokale Variablen in Linux

    Lassen Sie uns eine lokale Variable VAR erstellen und auf einen beliebigen Wert setzen, dann mit unset entfernen und sicherstellen, dass sie entfernt wurde:

    VAR1="Verlust"
    $echo $VAR1
    $ VAR1 zurücksetzen
    $echo $VAR1

    Eine andere Möglichkeit, eine Variable zu erstellen, ist der Exportbefehl. Entfernen Sie es, indem Sie einen leeren Wert zuweisen:

    export VAR="Verlust"
    $echo $VAR
    $var=
    $echo $VAR

    Lassen Sie uns nun eine Variable VAR2 erstellen und ihr einen Wert zuweisen. Entfernen Sie dann vorübergehend alle lokalen Variablen, indem Sie env -i ausführen. Die Shell wird ohne Variablen gestartet. Nach Eingabe von exit werden alle Variablen wiederhergestellt.

    VAR2="Verlust"
    $echo $VAR2
    $ env -i bash
    $echo $VAR2

    Benutzervariablen setzen und entfernen

    Bearbeiten Sie die .bashrc-Datei in Ihrem Home-Verzeichnis, indem Sie einen Exportbefehl hinzufügen, um die gewünschte Variable zu exportieren. Führen Sie dann den Quellbefehl aus, um die Änderungen zu übernehmen. Lassen Sie uns zum Beispiel eine CD-Variable erstellen:

    Fügen Sie diese Zeile hinzu (o, dann einfügen, dann Esc und :wq):

    export CD="Dies ist ein verlorenes Zuhause"

    Jetzt bleibt noch die Konfiguration zu aktualisieren:

    Quelle .bashrc
    $echo $CD

    Um diese Variable zu entfernen, entfernen Sie sie einfach aus .bashrc.

    Lassen Sie uns nun eine Umgebungsvariable mit .bash_profile hinzufügen. Diese Variable ist, wie Sie bereits wissen, nur verfügbar, wenn Sie sich aus der Ferne anmelden:

    vi .bash_profile

    Zeile hinzufügen:

    export VAR2="Das ist das verlorene Zuhause"

    Und führen Sie diese Befehle aus, um die Änderungen zu übernehmen und die Variablenhinzufügung zu testen:

    Quelle .bash_profile
    $echo $VAR2

    Die Variable ist nicht verfügbar, da Sie eine lokale Terminalsitzung erstellt haben. Verbinden Sie sich jetzt über ssh:

    sch [E-Mail geschützt]
    $echo $VAR2

    Sie können diese Umgebungsvariable auf die gleiche Weise wie im vorherigen Fall löschen, indem Sie sie aus der Datei löschen.

    Kommentar: Diese Variablen sind immer verfügbar, aber nicht für alle Benutzer.

    Festlegen und Entfernen von Systemumgebungsvariablen

    Lassen Sie uns eine Variable erstellen, die allen Benutzern in allen Terminalsitzungen außer Remotesitzungen zur Verfügung steht, indem wir sie zu /etc/bash.profile hinzufügen:

    vi /etc/bash.profile

    export VAR="Dies ist eine systemweite Variable"

    Dann aktualisieren wir:

    Quelle /etc/bash.bashrc

    Jetzt steht diese Variable allen Benutzern in allen Terminals zur Verfügung:

    echo $VAR
    $ sudo su
    $echo $VAR
    $su-
    $echo $VAR

    Wenn Sie die Umgebungsvariable allen Benutzern zur Verfügung stellen möchten, die sich remote mit diesem Computer verbinden, bearbeiten Sie die Datei /etc/profile:

    export VAR1="Dies ist eine systemweite Variable nur für Remote-Sitzungen"

    Aktualisieren Sie die Konfiguration und überprüfen Sie die Verfügbarkeit der Variablen, sie ist nur remote verfügbar:

    Quelle /etc/profile
    $echo $VAR1

    Wenn Sie unter Linux eine Umgebungsvariable hinzufügen müssen, damit sie sowohl für Remote- als auch für lokale Sitzungen verfügbar ist, exportieren Sie sie nach /etc/environment:

    vi /etc/environment

    export VAR12="Ich bin überall verfügbar"

    Wir überprüfen:

    Quelle /etc/environment
    $echo $VAR12
    $ sudo su
    $echo $VAR12
    $Ausgang
    $ ssh lokaler Host
    $echo $VAR12

    Umgebungsvariablen ( Umgebungsvariable) werden verwendet, um gemeinsame Werte von Variablen über Skripte und Programme hinweg zu speichern. Solche Variablen können für einen bestimmten Zeitraum gesetzt werden, zum Beispiel für den Betriebszeitraum einer bestimmten Terminal-Shell oder für den Zeitraum einer Benutzersitzung, oder Sie können eine Umgebungsvariable auf globaler Ebene setzen – für das gesamte System .

    Umgebungsvariablen

    $HOME
    Die Variable enthält den Pfad zum Home-Verzeichnis des aktuellen Benutzers. $USER
    Aktueller Benutzername $PATH
    Liste der Verzeichnisse, in denen die Shell nach ausführbaren Programmen suchen kann. $PWD
    Der Pfad zum aktuellen Arbeitsverzeichnis (bzw pwd). Beispiel: dir_path=$(pwd) . $SCHALE
    Standardinterpreter $RANDOM
    Erzeugt bei jedem Zugriff auf die Variable eine Zufallszahl 0..32767. $ SEKUNDEN
    Zeit in Sek. seit dem Start der Shell. $? Das Ergebnis des vorherigen Befehls. $HOSTNAME
    Computername $HISTFILE
    Pfad zur Verlaufsdatei des $IFS-Interpreters
    Liste der Trennzeichen für Befehle, Parameter, Array-Elemente (Standard: Leerzeichen, Tabulator, Zeilenumbruch) $PS1
    Interpreter-Eingabeaufforderungs-String-Vorlage.

    Vorübergehendes Festlegen einer Umgebungsvariablen

    Setzen einer Umgebungsvariable für den Sitzungszeitraum:

    # Für einen neuen Prozess env varname=value [Befehl] # Für die aktuelle Shell und alle ihre Unterprozesse export varname=value [Befehl]

    Der Wert der Variablen bleibt bis zum Neustart des Systems erhalten.

    Festlegen eines konstanten Werts

    Umgebungsvariablen auf Systemebene werden über die Datei /etc/environment gesetzt:

    UMGEBUNG="dev"

    Setzen einer benutzerspezifischen Umgebungsvariablen über ~/.bashrc oder ~/.bash_profile:

    PATH="$(PATH):/home/user/bin:"

    Aufmerksamkeit!

    Die Datei ~/.bash_profile wird ausgeführt, wenn der Interpreter mit der Option -l gestartet wird. Bei lokaler Anmeldung ist diese Datei nicht lesbar!

    Beachten Sie auch, dass die Änderungen erst nach einem Neustart der Sitzung wirksam werden!

    Anzeigen des Werts einer Umgebungsvariablen

    Um den Wert einer Umgebungsvariablen anzuzeigen, verwenden Sie den Befehl printenv:

    Printenv<имя_переменной>

    #Schale, #Bash, #Umgebung

    Während der Arbeit mit dem Server stellt die Shell viele Informationen zusammen, die sein Verhalten und seinen Zugriff auf Ressourcen bestimmen. Einige dieser Optionen befinden sich in den Shell-Einstellungen, andere werden durch Benutzereingaben bestimmt.

    Eine Möglichkeit, wie die Shell diese Informationen verfolgt, ist die Verwendung der Umgebung. Die Umgebung ist ein Bereich, der systemdefinierende Variablen enthält, die die Shell jedes Mal erstellt, wenn eine Sitzung gestartet wird.

    In diesem Handbuch wird erläutert, wie Sie mit der Umgebung interagieren und Umgebungs- und Shell-Variablen interaktiv und über Konfigurationsdateien lesen oder festlegen. Alle Schritte werden auf einem Ubuntu 12.04 VPS durchgeführt, aber jedem modernen Linux-Distribution sollte genauso funktionieren.

    Wie die Umgebung und ihre Variablen funktionieren

    Jedes Mal, wenn eine Shell-Sitzung aktiviert wird, wird ein Prozess gestartet, um Informationen zu sammeln und zu kompilieren, die der Shell und ihren untergeordneten Prozessen zur Verfügung stehen sollten. Die Shell erhält diese Daten aus vielen verschiedenen Dateien und Einstellungen auf dem System.

    Im Allgemeinen stellt die Umgebung ein Übertragungsmedium bereit, das sammelt und spezifiziert notwendigen Einstellungen Shell-Prozess, der sie wiederum an seine untergeordneten Prozesse übergibt.

    Die Umgebung hat die Form einer Zeichenfolge, die Schlüssel-Wert-Paare enthält. Mehrere Werte werden normalerweise durch einen Doppelpunkt (:) getrennt. Jedes Paar sieht im Allgemeinen ungefähr so ​​​​aus:

    SCHLÜSSEL=Wert1:Wert2:...

    Wenn der Wert Leerzeichen enthält, müssen doppelte Anführungszeichen verwendet werden:

    KEY="Wert mit Leerzeichen"

    Der Schlüssel bedeutet in diesem Fall die Variablen einer der beiden bestehende Arten: Umgebungs- oder Shell-Variablen.

    Umgebungsvariablen sind Variablen, die für die aktuelle Shell definiert wurden und von allen untergeordneten Shells oder Prozessen geerbt werden. Umgebungsvariablen werden verwendet, um Informationen an Prozesse zu übergeben, die von einer Shell gestartet werden.

    Shell-Variablen sind Variablen, die ausschließlich in der Shell enthalten sind, in der sie gesetzt oder definiert wurden. Sie werden häufig verwendet, um aktuelle Daten zu verfolgen (z. B. das aktuelle Arbeitsverzeichnis).

    Typischerweise werden solche Variablen mit Großbuchstaben bezeichnet. Dies hilft Benutzern, zwischen Umgebungsvariablen in anderen Kontexten zu unterscheiden.

    Ausgabe von Shell- und Umgebungsvariablen

    Jede Sitzung verfolgt ihre Shell- und Umgebungsvariablen. Es gibt mehrere Möglichkeiten, sie herauszubekommen.

    Um eine Liste aller Umgebungsvariablen anzuzeigen, verwenden Sie die Befehle env oder printenv. Standardmäßig geben sie genau das gleiche Ergebnis aus:

    printenv
    SHELL=/bin/bash
    TERM=xterm
    USER=Demuser
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd= 40;33;01:oder=40;31;01:su=37;41:sg=30;43:ca:...
    MAIL=/var/mail/demouser
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    PWD=/home/demouser
    LANG=en_US.UTF-8
    SHLVL = 1
    HOME=/home/demouser
    LOGNAME=Demuser
    LESSOPEN=| /usr/bin/lesspipe %s
    LESSCLOSE=/usr/bin/lesspipe %s %s
    _=/usr/bin/printenv

    Dies ist ein typisches Beispiel für die Ausgabe der Befehle printenv und env. Diese Befehle unterscheiden sich nur in wenigen Einzelfunktionen. Beispielsweise kann printenv nach den Werten einzelner Variablen fragen:

    printenv SHELL
    /bin/bash

    Mit dem Befehl env können Sie die Umgebung ändern, in der Programme ausgeführt werden, indem Sie eine Reihe von Variablendefinitionen an den Befehl übergeben, etwa so:

    env VAR1="blahblah" command_to_run command_options

    Wie oben erwähnt, erben untergeordnete Prozesse normalerweise die Umgebungsvariablen des übergeordneten Prozesses, wodurch es möglich ist, Werte zu ändern oder zusätzliche Variablen für untergeordnete Prozesse einzuführen.

    Wie Sie in der Ausgabe des Befehls printenv sehen können, werden viele Umgebungsvariablen von Systemdateien und Prozessen ohne Benutzereingriff erstellt.

    Aber wie sehen Sie Shell-Variablen?

    Dazu wird der set-Befehl verwendet. Wenn es ohne zusätzliche Optionen eingegeben wird, listet set alle Shell-Variablen, Umgebungsvariablen, lokalen Variablen und Shell-Funktionen auf:

    Satz
    BASH=/bin/bash
    BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
    BASH_ALIASES=()
    BASH_ARGC=()
    BASH_ARGV=()
    BASH_CMDS=()
    . . .

    In der Regel ist diese Liste recht lang. Um es in einem bequemeren Format anzuzeigen, öffnen Sie es mit einem Pager-Programm:

    Diese Liste enthält eine große Menge zusätzlicher Informationen, die im Moment nicht benötigt werden (z. B. einige Bash-Funktionen).

    Um die Ausgabe "aufzuräumen", müssen Sie den set-Befehl im POSIX-Modus ausführen, der Shell-Funktionen überspringt. Dies muss in einer Subshell erfolgen, um die aktuelle Umgebung nicht zu ändern:

    (set -o posix; set)

    Diese Aktion listet alle Umgebungs- und Shell-Variablen auf.

    Sie können dieses Ergebnis auch mit dem Ergebnis der env/printenv-Befehle vergleichen und versuchen, nur Shell-Variablen aufzulisten, aber eine solche Liste ist nicht ideal, da diese Befehle Informationen anders ausgeben:

    Komm-23<(set -o posix; set | sort) <(env | sort)

    Höchstwahrscheinlich enthält die Liste mehrere Umgebungsvariablen, da der Befehl set die Werte in Anführungszeichen druckt, die Befehle printenv und env jedoch nicht.

    Es ist jedoch eine großartige Möglichkeit, die Umgebungs- und Shell-Variablen anzuzeigen, die in einer bestimmten Sitzung festgelegt wurden.

    Solche Variablen werden für alle möglichen Zwecke verwendet. Sie bieten eine alternative Möglichkeit, dauerhafte Sitzungswerte zwischen Prozessen festzulegen, ohne Änderungen an der Datei vornehmen zu müssen.

    Grundlegende Umgebungs- und Shell-Variablen

    Einige besonders nützliche Umgebungs- und Shell-Variablen werden sehr häufig verwendet.

    Nachfolgend finden Sie eine Liste der wichtigsten Umgebungsvariablen:

    • HÜLSE: beschreibt die Shell, die die eingegebenen Befehle interpretiert. In den meisten Fällen ist bash standardmäßig eingestellt, aber dieser Wert kann bei Bedarf geändert werden.
    • BEGRIFF: Gibt die Art des Terminals an, das beim Start der Shell emuliert wird. Je nach betrieblichen Anforderungen können unterschiedliche Hardware-Endgeräte emuliert werden. Im Allgemeinen müssen Sie sich darüber keine Gedanken machen.
    • BENUTZER: aktueller Benutzer.
    • PWD: aktuelles Arbeitsverzeichnis.
    • OLDPWD: vorheriges Arbeitsverzeichnis. Die Shell behält es, falls Sie den Befehl cd - ausführen.
    • LS_FARBEN: Gibt die Farbcodes an, die verwendet werden, um die Ausgabe des Befehls ls farblich zu codieren. Eine solche Ausgabe hilft dem Benutzer, das Ergebnis des Befehls schneller zu lesen (z. B. um schnell zwischen Dateitypen zu unterscheiden).
    • MAIL: Pfad zum aktuellen Postfach des Benutzers.
    • WEG: Liste der Verzeichnisse, auf die das System beim Ausführen von Befehlen zugreift. Wenn der Benutzer den Befehl ausführt, überprüft das System diese Verzeichnisse in der angegebenen Reihenfolge auf die ausführbare Datei.
    • SPRACHE: Aktuelle Sprach- und Lokalisierungseinstellungen, einschließlich Zeichenkodierung.
    • HEIM: Heimatverzeichnis des aktuellen Benutzers.
    • _ : zuletzt ausgeführter Befehl.

    Nachdem Sie die Liste der Umgebungsvariablen überprüft haben, untersuchen Sie die Liste der Shell-Variablen:

    • BASHOPTS: Liste der Optionen, die beim Ausführen von bash verwendet werden. Dies kann verwendet werden, um zu überprüfen, ob die Umgebung ordnungsgemäß funktioniert.
    • BASH_AUSFÜHRUNG: die laufende Version von bash in menschenlesbarer Form.
    • BASH_VERSINFO: Bash-Version in maschinenlesbarem Format.
    • SÄULEN: definiert die Breite der Ausgabe in Spalten.
    • DIRSTACK: Der Verzeichnisstapel, der für die Befehle pushd und popd verfügbar ist.
    • HISTFILESIZE: Die maximale Anzahl von Zeilen, die in der Befehlsverlaufsdatei enthalten sind.
    • HISTGRÖSSE: Anzahl der in der Verlaufsliste zu speichernden Befehle.
    • HOSTNAME: aktueller Hostname.
    • IFS: Internes Trennzeichen für Eingabefelder auf der Kommandozeile. Der Standardwert ist ein Leerzeichen.
    • PS1: definiert die primäre Eingabeaufforderungszeichenfolge - das Erscheinungsbild der Befehlszeile beim Starten einer Shell-Sitzung. Die PS2-Variable legt die sekundäre Eingabeaufforderungszeichenfolge fest, wenn sich der Befehl über mehrere Zeilen erstreckt.
    • Schalentiere: Shell-Optionen, die mit set gesetzt werden können.
    • UID: Die eindeutige ID des aktuellen Benutzers.

    Setzen von Shell- und Umgebungsvariablen

    Nachfolgend finden Sie einige Beispiele, um den Unterschied zwischen Shell- und Umgebungsvariablen zu demonstrieren und die Syntax zum Festlegen dieser Variablen zu erläutern.

    Shell-Variablen erstellen

    Zuerst müssen Sie die Shell-Variablen der aktuellen Sitzung setzen. Dies ist sehr einfach, Sie müssen lediglich einen Namen und einen Wert angeben. Wie bereits erwähnt, werden die Namen solcher Variablen in Großbuchstaben geschrieben.

    TEST_VAR="Hallo Welt!"

    In diesem Beispiel werden Anführungszeichen verwendet, da der Wert Leerzeichen enthält. Außerdem müssen hier einfache Anführungszeichen verwendet werden, da das Ausrufezeichen ein Sonderzeichen in der Bash-Shell ist, das auf die Befehlshistorie verweist, sofern es nicht maskiert oder in einfache Anführungszeichen gesetzt wird.

    Die resultierende Shell-Variable ist also in der aktuellen Sitzung gültig, wird aber nicht an ihre untergeordneten Prozesse weitergegeben.

    Um dies zu überprüfen, verwenden Sie den grep-Befehl für das Ergebnis des set-Befehls:

    einstellen | grep TEST_VAR
    TEST_VAR="Hallo Welt!"

    Sie können auch überprüfen, ob die angegebene Variable keine Umgebungsvariable ist, indem Sie grep für das Ergebnis des Befehls printenv ausführen:

    printenv | grep TEST_VAR

    Diese Aktion führt zu keinem Ergebnis.

    Dies kann verwendet werden, um den Wert einer beliebigen Shell- oder Umgebungsvariablen zu öffnen.

    echo $TEST_VAR
    Hallo Welt!

    Wie Sie sehen können, müssen Sie das $-Symbol verwenden, um auf den Wert einer Variablen zu verweisen.

    Auch hier sollte die resultierende Variable nicht an einen untergeordneten Prozess übergeben werden. Um dies zu testen, erweitern Sie in Ihrer aktuellen Shell eine neue Bash-Shell:

    bash
    echo $TEST_VAR

    Wenn Sie eine untergeordnete Shell erweitern und versuchen, den Inhalt einer Variablen zu öffnen, wird nichts angezeigt. Dies bedeutet, dass alles ordnungsgemäß funktioniert.

    Um zu Ihrer ursprünglichen Shell zurückzukehren, geben Sie exit ein:

    Umgebungsvariablen erstellen

    Versuchen Sie nun, die Shell-Variable in eine Umgebungsvariable umzuwandeln. Dies geschieht durch den Export einer Variablen. Der Befehl, der den Export durchführt, hat einen entsprechenden Namen.

    Dieser Befehl verwandelt eine Shell-Variable in eine Umgebungsvariable. Um zu überprüfen, ob alles richtig gemacht wurde, können Sie die Liste der Umgebungsvariablen erneut überprüfen:

    printenv | grep TEST_VAR
    TEST_VAR=Hallo Welt!

    Jetzt wird diese Variable in dieser Liste angezeigt. Sie können die untergeordnete Shell auch wieder erweitern:

    bash
    echo $TEST_VAR
    Hallo Welt!

    Großartig! Die Kind-Shell hat die Eltern-Shell-Variable erhalten. Versuchen Sie, eine weitere Variable zu exportieren, bevor Sie die untergeordnete Shell verlassen.

    export NEW_VAR="Export testen"

    Überprüfen Sie, ob die Variable exportiert wurde:

    printenv | grep NEW_VAR
    NEW_VAR=Export testen

    Kehren Sie nun zur ursprünglichen Shell zurück:

    Prüfen Sie, ob die angegebene Variable geöffnet werden kann:

    Ergebnis wird nicht zurückgegeben

    Dies liegt daran, dass Umgebungsvariablen nur an untergeordnete Prozesse weitergegeben werden. Es gibt keine integrierte Möglichkeit, Umgebungsvariablen der übergeordneten Shell festzulegen. In den meisten Fällen verhindert dies, dass Programme die Betriebsumgebung beeinträchtigen, aus der sie gestartet wurden.

    Die Variable NEW_VAR wurde als untergeordnete Shell-Umgebungsvariable festgelegt. Diese Variable gilt für diese Shell und ihre untergeordneten Shells und Prozesse. Nachdem der Benutzer zur ursprünglichen Shell zurückgekehrt war, wurde diese Umgebung zerstört.

    Variablen verschieben und zurücksetzen

    Die Variable TEST_VAR ist immer noch eine Umgebungsvariable. Um es wieder zu einer Shell-Variablen zu machen, geben Sie Folgendes ein:

    export -n TEST_VAR

    Jetzt ist diese Variable keine Umgebungsvariable mehr:

    printenv | grep TEST_VAR

    Dies ist wieder eine Shell-Variable:

    einstellen | grep TEST_VAR
    TEST_VAR="Hallo Welt!"

    Um eine Variable vollständig zurückzusetzen, sei es eine Umgebungs- oder Shell-Variable, verwenden Sie den unset-Befehl:

    Stellen Sie sicher, dass es keine solche Variable mehr gibt:

    Das Ergebnis wurde nicht angezeigt, da die Variable zurückgesetzt wurde.

    Automatisches Setzen von Umgebungsvariablen

    Wie bereits erwähnt, verwenden viele Programme Umgebungsvariablen, um festzulegen, wie sie funktionieren sollen. Das Festlegen der erforderlichen Variablen jedes Mal, wenn eine neue Shell erstellt wird, ist ziemlich unpraktisch. Außerdem werden viele Variablen sofort bei der Eingabe gesetzt. Wie setze ich Variablen automatisch?

    Das ist etwas komplizierter, als es auf den ersten Blick aussieht, weil die Bash-Shell viele Konfigurationsdateien liest.

    Shell-Sitzungstypen

    Die Bash-Shell liest unterschiedliche Konfigurationsdateien, je nachdem, wie die Sitzung gestartet wurde. Die ersten beiden Arten von Sitzungen, die eine Shell definieren, sind die Startsitzung und die untergeordnete Sitzung.

    Start- oder Anfangsschale(Login-Shell) ist eine Shell-Sitzung, die nach der Autorisierung des Benutzers geöffnet wird. Meldet sich der Benutzer an einem Terminal oder per SSH an, wird eine Start-Shell geöffnet.

    Wenn eine neue Sitzung von einer autorisierten (Start-)Sitzung gestartet wird (da in den Beispielen zuvor eine neue Bash-Shell gestartet wurde), wird diese Sitzung Tochtergesellschaft (nicht-Anmeldung Hülse). Um diese Sitzung zu öffnen, müssen Sie das Autorisierungsverfahren nicht durchlaufen.

    Außerdem sind Shell-Sitzungen interaktiv und nicht interaktiv.

    interaktive Sitzung Shells (interaktive Shell) ist eine Sitzung, die mit einem Terminal verbunden ist. Eine nicht interaktive Shell-Sitzung ist eine Sitzung, die nicht mit einem Terminal verbunden ist.

    Shell-Sessions werden also nach folgenden Aspekten klassifiziert: Start-Child, Interactive-Non-Interactive.

    Eine normale Sitzung, die mit SSH geöffnet wird, ist normalerweise eine interaktive Startsitzung. Ein Skript, das über die Befehlszeile ausgeführt wird, wird normalerweise in einer nicht interaktiven untergeordneten Sitzung ausgeführt. Eine Terminalsitzung besteht aus verschiedenen Kombinationen dieser beiden Eigenschaften.

    Durch die Klassifizierung einer Sitzung als Startsitzung oder untergeordnete Sitzung versteht das System, welche Dateien gelesen werden müssen, um die Shell-Sitzung zu initialisieren.

    Also erhält die Startsitzung zuerst die Konfigurationen aus /etc/profile. Anschließend sucht es nach der Start-Shell-Konfigurationsdatei im Home-Verzeichnis des Benutzers, um die benutzerdefinierten Konfigurationen abzurufen.

    Eine solche Sitzung liest die Dateien ~/.bash_profile, ~/.bash_login und ~/.profile und liest keine anderen Dateien.

    Die untergeordnete Sitzung liest wiederum /etc/baash.bashrc und dann die Datei ~/.bash.rc des Benutzers, um die Umgebung bereitzustellen.

    Nicht interaktive Shells lesen die Umgebungsvariable BASH_ENV und die angegebene Datei, um eine neue Umgebung zu erstellen.

    So setzen Sie Umgebungsvariablen

    Wie Sie sehen können, sind die Konfigurationen über verschiedene Dateien verstreut.

    Dies macht das System sehr flexibel, was in bestimmten Situationen nützlich ist, in denen Sie unterschiedliche Optionen für die Start- und untergeordnete Shell festlegen müssen. Diese Shells verwenden jedoch im Allgemeinen dieselben Einstellungen.

    Glücklicherweise geben die meisten Linux-Distributionen die Konfigurationsdatei der untergeordneten Shell als Quelle für die Konfigurationen der Start-Shell an. Das bedeutet, dass Sie Umgebungsvariablen für beide Sitzungen in den Konfigurationsdateien der untergeordneten Shell definieren können.

    Normalerweise verwenden beide Shells benutzerdefinierte Umgebungsvariablen. Das bedeutet, dass Sie diese Variablen in der Datei ~/.bashrc festlegen können.

    Öffnen Sie diese Datei:

    Höchstwahrscheinlich enthält es bereits einige Daten. Die meisten der hier angegebenen Werte sind Bash-Optionen und haben nichts mit Umgebungsvariablen zu tun. Variablen in dieser Datei werden auf die gleiche Weise wie in der Befehlszeile gesetzt:

    export VARNAME=Wert

    Nachdem Sie alle erforderlichen Variablen eingegeben haben, schließen Sie die Datei. Beim nächsten Start einer Shell-Session werden die hier gesetzten Variablen gelesen und an die Shell-Umgebung übergeben. Geben Sie Folgendes ein, um die aktuelle Sitzung anzuweisen, die angegebene Datei zu lesen:

    Quelle ~/.bashrc

    Um systemweite Variablen festzulegen, fügen Sie sie zu /etc/profile, /etc/bash.bashrc oder /etc/environment hinzu.

    Ergebnisse

    Shell- und Umgebungsvariablen sind immer in allen Shell-Sitzungen vorhanden, daher ist es besonders nützlich zu wissen, wie man mit ihnen arbeitet. Sie können verwendet werden, um übergeordnete Prozesskonfigurationen an untergeordnete Prozesse zu übergeben sowie Einstellungen außerhalb von Dateien zu konfigurieren.

    In bestimmten Situationen bietet dies eine Reihe von Vorteilen. Beispielsweise verlassen sich einige Bereitstellungsmechanismen auf Umgebungsvariablen, um Authentifizierungsinformationen einzurichten. Das ist praktisch, da so wichtige Daten in keiner Datei gespeichert werden und somit zuverlässig vor Fremden geschützt sind.

    Es gibt viele andere häufigere Situationen, in denen es notwendig sein kann, Variablen zu lesen oder die Systemumgebung zu ändern. Die in diesem Tutorial beschriebenen Tools und Methoden sind eine hervorragende Grundlage, um Fähigkeiten im Umgang mit Variablen und deren korrekter Verwendung zu entwickeln.

    Stichworte: ,
    mob_info