|
|
Zeile 8: |
Zeile 8: |
| * "sh" ist der Vorfahre der Bash | | * "sh" ist der Vorfahre der Bash |
|
| |
|
| =Umgebungsvariablen und Shellvariablen= | | = Variablen = |
| *Die Inhalte von Variablen sorgen dafür, dass laufende Programme und Skripte sich selbst mit kleinen Informationen versorgen können, ohne dass der Benutzer diese jedes Mal explizit angeben muss
| | ; Umgebungsvariablen und Shellvariablen |
| *Hierbei wird unterschieden zwischen Umgebungsvariablen und Shellvariablen
| | [[Linux/Shells und Shell-Skripte/Umgebungsvariablen und Shellvariablen]] |
| *Die Unterschiede zwischen diesen beiden Variablentypen liegen einerseits darin, durch welche Konfigurationsdateien sie deklariert werden und demzufolge, wann sie durch welches Programm ausgewertet werden
| |
| | |
| Andererseits unterscheiden sie sich in ihrem Wirkungsbereich:
| |
| | |
| ==Umgebungsvariablen==
| |
| Umgebungsvariablen gelten für alle Shells, die ein Benutzer verwendet. | |
| * Die Inhalte dieser Variablen werden außerdem vererbt.
| |
| * Das bedeutet, dass beim Aufruf einer Subshell (egal, ob durch ein Skript oder den Benutzer) ein automatischer Export der Variablen in diese Subshell stattfindet.
| |
| * Bei Umgebungsvariablen werden normalerweise Großbuchstaben verwendet.
| |
| * Das hat keinen technischen Hintergrund, sondern dient lediglich der Übersichtlichkeit und Auffindbarkeit für den Benutzer
| |
| | |
| ==Shellvariablen==
| |
| Shellvariablen müssen in jeder Shell, die durch den Benutzer oder ein Skript gestartet wird, neu deklariert werden. | |
| * Es findet standardmäßig keine Vererbung statt.
| |
| * Gemäß Konvention werden Shellvariablen kleingeschrieben
| |
| | |
| ==Variablen==
| |
| Beachten Sie, dass die Bash zwischen Groß- und Kleinschreibweise unterscheidet.
| |
| * Die Konventionen bezüglich der Schreibweisen bei Umgebungs- oder Shellvariablen werden von einigen Distributionen nicht eingehalten
| |
| | |
| ===Variablen deklarieren===
| |
| Die Deklaration und Abfrage einer Shellvariable erfolgt recht einfach:
| |
| # a=5
| |
| # b=6
| |
| # let c=$a+$b
| |
| # echo $c=$a+$b
| |
| 11=5+6
| |
| In diesem Beispiel werden die Variablen a und b mit den Werten 5 und 6 gefüllt.
| |
| * Die dritte Zeile sorgt dafür, dass der Variablen c das Ergebnis der Summe aus $a und $b übergeben wird.
| |
| * Die letzte Zeile gibt die komplette Operation aus
| |
| Die Inhalte einer Variablen bleiben innerhalb einer Shell erhalten.
| |
| * Sie können also die Variable wiederholt abrufen oder verwenden:
| |
| # echo $c
| |
| 11
| |
| | |
| ===Variablen exportieren===
| |
| Wird eine Subshell aufgerufen, so steht diese Variable nicht mehr zur Verfügung, weil es sich nicht um eine Umgebungsvariable handelt.
| |
| * Es ist aber möglich, eine Variable für eine Subshell verfügbar zu machen, indem man diese exportiert.
| |
| * Ein solcher Export erfolgt nur an untergeordnete, jedoch nie an übergeordnete Shells.
| |
| * Ein Export bewirkt nämlich nicht, dass aus einer Shellvariable eine Umgebungsvariable wird.
| |
| * Der Exportbefehl kann auf zwei Arten durchgeführt werden:
| |
| # export c
| |
| # sh
| |
| sh-3.00# echo $c
| |
| 11
| |
| In der gerade dargestellten ersten Variante wurde die Variable c aus dem vorangegangenen Beispiel exportiert.
| |
| * Anschließend wurde mit sh eine neue Subshell geöffnet und dann mit echo $c die Variable auf dem Bildschirm ausgegeben.
| |
| * Die zweite Methode sieht folgendermaßen aus:
| |
| # export z=1000
| |
| # sh
| |
| sh-3.00# echo $z
| |
| 1000
| |
| | |
| ===Variablen einsehen===
| |
| Diesmal ist die Deklaration der Variablen und der Export mit nur einem einzigen Befehl durchgeführt worden.
| |
| * Mit echo $z wird wieder demonstriert, dass der Inhalt der Variablen in der Ziel-Shell angekommen ist.
| |
| * Mit dem Befehl set können Sie ohne Angabe von Parametern nachsehen, welche Umgebungs- und Shellvariablen Ihre aktuelle Shell gerade verwendet.
| |
| * Am besten geben Sie die Ausgabe an less weiter, damit Sie den Inhalt in Ruhe untersuchen können.
| |
| * Eine gekürzte Ausgabe könnte Folgendes enthalten:
| |
| # set | less
| |
| a=5
| |
| b=6
| |
| BASH=/bin/bash
| |
| c=11
| |
| HISTSIZE=1000
| |
| HOME=/root
| |
| HOSTNAME=archangel
| |
| MANPATH=/usr/share/man:/usr/local/man:/usr/X11R6/man:/opt/gnome/share/man
| |
| PAGER=less
| |
| PATH=/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/usr/
| |
| X11R
| |
| Die Umgebungsvariablen können mit dem Kommando env eingesehen werden.
| |
| * Es ist ratsam, die Ausgabe mit less zu betrachten
| |
| | |
| ===Variablen löschen===
| |
| Variablen werden mit dem Befehl unset gelöscht.
| |
| * Um die Variablen aus den Beispielen weiter oben zu entfernen, geben Sie Folgendes ein:
| |
| # unset a
| |
| # unset b
| |
| # unset c
| |
| Zur Überprüfung:
| |
| # set | less
| |
| BASH=/bin/bash
| |
| HISTSIZE=1000
| |
| | |
| Die Variablen a, b und c wurden gelöscht.
| |
| * Alternativ wäre auch eine Neuanmeldung möglich gewesen, denn es handelt sich um Shellvariablen, die bei einer Abmeldung nicht erhalten bleiben
| |
|
| |
|
| = Aliase und Funktionen = | | = Aliase und Funktionen = |