BASH-Programmierung

Exportieren von Bash-Variablen

Exportieren von Bash-Variablen
Das Verständnis von Variablen in der Bash-Shell ist für die professionelle Arbeit mit Linux unerlässlich. Dies ist eine der wichtigsten Voraussetzungen für die Programmierung sowie das Erreichen der Linux Professional Institute Certification (LPIC) Level 1 [2].

Der zuvor veröffentlichte Artikel von Fahmida Yesmin [4] gibt Ihnen eine wunderbare Einführung in Bash-Variablen. Hier gehen wir weiter und erklären, wie Sie Variablen in der Bash so deklarieren, dass Sie sie in anderen Umgebungen auf Ihrem Linux-System verwenden können und welche entsprechenden Nebenwirkungen Sie beachten müssen.

Eine kurze Beschreibung von Bash

Die Bash-Shell wurde erstmals 1989 veröffentlicht und wurde als Standard-Login-Shell für die meisten Linux-Distributionen verwendet. Brian Fox hat Bash als UNIX-Shell und eine Befehlssprache für das GNU-Projekt als freien Softwareersatz für die Bourne-Shell geschrieben wrote. Es ist ein Akronym für Bourne Again Shell. Bash ist weitgehend kompatibel mit Sch und enthält nützliche Funktionen aus der Korn-Shell ksh und die C-Schale csh [6].

Während das GNU-Betriebssystem andere Shells bereitstellt, einschließlich einer Version von csh, Bash ist die standardmäßige interaktive Shell. Es wurde im Hinblick auf Portabilität entwickelt und läuft derzeit auf fast jeder Version von UNIX sowie anderen Betriebssystemen [9].

Bash-Variablen auf den Punkt gebracht

Variablen sind wesentliche Bestandteile von Programmiersprachen. Sie werden in einem Computerprogramm referenziert und manipuliert. Einfach ausgedrückt repräsentieren Variablen benannte Speicherzellen. Dies ist in Bash dasselbe wie in jeder Programmiersprache. Dadurch ist es uns als Mensch und Benutzer des Computers möglich, Werte im „Gehirn“ des Computers zu speichern und über den vergebenen Namen der Variablen wiederzufinden.

Der Begriff Variable bezieht sich auf eine kombinierte Form von zwei Wörtern, d.h.e., variabel + fähig, d. h. sein Wert kann geändert und mehrfach verwendet werden. Nicht veränderbare Variablen heißen dagegen Konstanten. [10]

Solange genügend Speicher für Ihr Skript zur Verfügung steht, können Sie Variablen frei erstellen und verwenden. Sie können sie einfach einstellen, indem Sie einen Variablennamen definieren und dann seinen Wert zuweisen. Ein Variablenname in Bash kann Buchstaben, Ziffern und Unterstriche enthalten. Der Name kann nur mit einem Buchstaben und einem Unterstrich beginnen. Gültige Variablennamen sind size, tax5 und _tax20, aber nicht 5rules.

Ein Variablenwert in Bash kann eine Zahl, ein einzelnes Zeichen, eine Zeichenfolge oder eine Liste von Elementen (genannt Array) enthalten. Es hat keinen sichtbaren Datentyp und der interne Datentyp der Variablen wird bei der Zuweisung eines Wertes automatisch ermittelt (oder abgeleitet). Außerdem muss die Variable nicht deklariert werden. Wenn Sie ihrer Referenz einen Wert zuweisen, wird die Variable automatisch erstellt create. Das folgende Bash-Beispielskript demonstriert dies für eine Zeichenfolgenzuweisung und eine numerische Zahlenzuweisung.

#! /bin/bash
welcomeMessage="Hallo Welt!"
echo $welcomeMessage
Preis=145
echo $preis

Namenskonventionen von Bash-Variablen

Für die Schreibweise von Variablennamen gibt es keine festen Regeln, sondern nur Konventionen. Diese Konventionen werden verwendet:

Für globale IT-Unternehmen ist es üblich, mit Styleguides zu arbeiten, um einen gemeinsamen Codierungsstil im Unternehmen zu gewährleisten. Weitere Informationen zu den von ihnen befolgten Konventionen finden Sie im Developer Editorial für IBM und im Google Style Guide [3].

Variable Sichtbarkeit

Der Standardfall ist, dass eine Variable lokal an eine Struktur, Funktion, ein Skript oder einen Prozess gebunden ist und von außerhalb nicht darauf zugegriffen werden kann. Das folgende Beispiel zeigt dies für die Variable $message, die zum Skript gehört, und $welcome, die zur Funktion outputWelcomeMessage() gehört.

#!/bin/bash
# Definiere eine variable Nachricht an das Skript
message="Hallo, nochmal!”
AusgabeWelcomeMessage ()
# eine lokale Variable definieren
Willkommen=”Hallo!”
echo $willkommen

outputWelcomeMessage () # druckt Hallo!
echo $message # druckt Hallo, nochmal!

Um sicherzustellen, dass eine zuvor definierte Variable mit demselben Namen lokal gebunden ist, verwenden Sie das Schlüsselwort local, wie als nächstes gezeigt. Ohne das Schlüsselwort local würde sich die Zuweisung in Zeile 8 auf die zuvor definierte global definierte Variable mit dem gleichen Namen beziehen.

#!/bin/bash
# Definiere eine variable Nachricht an das Skript
message="Hallo, nochmal!”
AusgabeWelcomeMessage ()
# Definiere eine lokale Variable mit demselben Namen
Lokale Nachricht=”Hallo!”
echo $Nachricht

outputWelcomeMessage () # druckt Hallo!
echo $message # druckt Hallo, nochmal!

Erweitern des Gültigkeitsbereichs einer Variablen

Um eine interne Variable für andere untergeordnete Prozesse sichtbar zu machen, ist ein zusätzlicher Schritt erforderlich. Dieser Schritt wird als Exportieren einer Variablen bezeichnet. Bash bietet die Verwendung des Schlüsselwortexports gefolgt vom Variablennamen an. Die folgende Auflistung zeigt dies für die Variable backupPath.

$ backupPath="/opt/backup/"
$ export backupPath

Der Export-Befehl ist eine eingebaute Shell, die verwendet wird, um die Variable als eine Variable zu definieren, die Subshells (vom Original erzeugte Shells) erben. Variablen, die exportiert werden, können von mehr als einem Prozess gelesen und geschrieben werden, dann.

Die zweite Möglichkeit besteht darin, die Variable von Anfang an als Umgebungsvariable zu deklarieren. Sie können dies tun, indem Sie das Schlüsselwort deklarieren gefolgt von der Option „-x“ verwenden (siehe [5] für weitere Informationen zum Deklaration-Befehl). Der Effekt ähnelt dem zuvor eingeführten Exportbefehl.

$ deklarieren -x BACKUPPATH=“/opt/backup/“

Von anderen Sitzungen erben

Wenn Sie ein Programm ausführen, erbt es automatisch seine Umgebungsvariablen vom übergeordneten Prozess. Wenn beispielsweise $HOME im Elternteil auf /root gesetzt ist, wird die $HOME-Variable des Kindes ebenfalls auf /root gesetzt.

Weitere Befehle

Linux bietet unter anderem nützliche Befehle und Optionen, die sich auf Variablen beziehen. Die ersten beiden heißen env und printenv. Sie listen alle Umgebungsvariablen auf.

Das Bild unten zeigt die Ausgabe des Befehls env in einem Terminal, das in einer X-Sitzung ausgeführt wird. Es enthält Variablen wie $XTERM (Terminaltyp), $SHELL (das Programm, das beim Anmelden aufgerufen wird und /bin/bash für den Pfad zum Bash-Interpreter anzeigt), $LS_COLORS (die Farben, die verwendet werden, um verschiedene Dateien hervorzuheben) Typen beim Aufruf von ls) und $DESKTOP_SESSION (die aktuelle X-Desktop-Umgebung).

Der dritte und der vierte sind Optionen des Exportbefehls - -p und -n. -p ist die Abkürzung für print und zeigt nur alle exportierten Variablen in der aktuellen Shell mit dem Befehl deklarieren an.

$ exportieren -p
deklariere -x DESKTOP_SESSION="xfce"
deklariere -x ANZEIGE=":0"
erklären -x GLADE_CATALOG_PATH=":"
deklariere -x GLADE_MODULE_PATH=":"
deklariere -x GLADE_PIXMAP_PATH=":"
deklariere -x HOME="/home/frank"
deklariere -x LANG="de_DE.UTF-8"

Die Option -n wird verwendet, um eine Umgebungsvariable zu deaktivieren. Die folgende Auflistung demonstriert dies für die zuvor definierte Variable BACKUPPATH.

$ export -n BACKUPPATH

Fazit

Bash ist eine sehr clevere, aber manchmal auch etwas komplexe Umgebung. Variablen steuern, wie die verschiedenen Tools interagieren. Der Export von Variablen hilft bei der Kommunikation zwischen Prozessen und ist im Alltag einfach zu verwenden.

Über die Autoren

Jacqui Kabeta ist Umweltschützerin, begeisterte Forscherin, Trainerin und Mentorin. In mehreren afrikanischen Ländern hat sie in der IT-Branche und im NGO-Umfeld gearbeitet.

Frank Hofmann ist IT-Entwickler, Trainer und Autor und arbeitet am liebsten von Berlin, Genf und Kapstadt aus. Co-Autor des Debian Package Management Book, erhältlich bei dpmbd.org

Links und Referenzen

Beste Befehlszeilenspiele für Linux
Die Befehlszeile ist nicht nur Ihr größter Verbündeter bei der Verwendung von Linux – sie kann auch eine Quelle der Unterhaltung sein, da Sie damit vi...
Beste Gamepad-Mapping-Apps für Linux
Wenn du Spiele unter Linux gerne mit einem Gamepad statt mit einem typischen Tastatur- und Maus-Eingabesystem spielst, gibt es einige nützliche Apps f...
Nützliche Tools für Linux-Spieler
Wenn Sie gerne unter Linux spielen, haben Sie wahrscheinlich Apps und Dienstprogramme wie Wine, Lutris und OBS Studio verwendet, um das Spielerlebnis ...