Linux/Shells und Shell-Skripte/Umgebungsvariablen und Shellvariablen: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „=Umgebungsvariablen und Shellvariablen= *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 *Hierbei wird unterschieden zwischen Umgebungsvariablen und Shellvariablen *Die Unterschiede zwischen diesen beiden Variablentypen liegen einerseits darin, durch welche Konfigurationsdateien sie deklariert werden und demzuf…“
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
=Umgebungsvariablen und Shellvariablen=
==Umgebungsvariablen und Shellvariablen==
*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
*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
*Hierbei wird unterschieden zwischen Umgebungsvariablen und Shellvariablen
*Hierbei wird unterschieden zwischen 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
*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:
Andererseits unterscheiden sie sich in ihrem Wirkungsbereich


==Umgebungsvariablen==
===Umgebungsvariablen===
Umgebungsvariablen gelten für alle Shells, die ein Benutzer verwendet.
Umgebungsvariablen gelten für alle Shells, die ein Benutzer verwendet
* Die Inhalte dieser Variablen werden außerdem vererbt.
* 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.
* 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.
* Bei Umgebungsvariablen werden normalerweise Großbuchstaben verwendet
* Das hat keinen technischen Hintergrund, sondern dient lediglich der Übersichtlichkeit und Auffindbarkeit für den Benutzer
* Das hat keinen technischen Hintergrund, sondern dient lediglich der Übersichtlichkeit und Auffindbarkeit für den Benutzer


==Shellvariablen==
===Shellvariablen===
Shellvariablen müssen in jeder Shell, die durch den Benutzer oder ein Skript gestartet wird, neu deklariert werden.
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.
* Es findet standardmäßig keine Vererbung statt
* Gemäß Konvention werden Shellvariablen kleingeschrieben
* Gemäß Konvention werden Shellvariablen kleingeschrieben


==Variablen==
===Variablen===
Beachten Sie, dass die Bash zwischen Groß- und Kleinschreibweise unterscheidet.
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
* Die Konventionen bezüglich der Schreibweisen bei Umgebungs- oder Shellvariablen werden von einigen Distributionen nicht eingehalten


===Variablen deklarieren===
====Variablen deklarieren====
Die Deklaration und Abfrage einer Shellvariable erfolgt recht einfach:
Die Deklaration und Abfrage einer Shellvariable erfolgt recht einfach
  # a=5
  # a=5
  # b=6
  # b=6
Zeile 29: Zeile 29:
  # echo $c=$a+$b
  # echo $c=$a+$b
  11=5+6
  11=5+6
In diesem Beispiel werden die Variablen a und b mit den Werten 5 und 6 gefüllt.
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 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 letzte Zeile gibt die komplette Operation aus
Die Inhalte einer Variablen bleiben innerhalb einer Shell erhalten.
Die Inhalte einer Variablen bleiben innerhalb einer Shell erhalten
* Sie können also die Variable wiederholt abrufen oder verwenden:
* Sie können also die Variable wiederholt abrufen oder verwenden
  # echo $c
  # echo $c
  11
  11


===Variablen exportieren===
====Variablen exportieren====
Wird eine Subshell aufgerufen, so steht diese Variable nicht mehr zur Verfügung, weil es sich nicht um eine Umgebungsvariable handelt.
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.
* 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 solcher Export erfolgt nur an untergeordnete, jedoch nie an übergeordnete Shells
* Ein Export bewirkt nämlich nicht, dass aus einer Shellvariable eine Umgebungsvariable wird.
* Ein Export bewirkt nämlich nicht, dass aus einer Shellvariable eine Umgebungsvariable wird
* Der Exportbefehl kann auf zwei Arten durchgeführt werden:
* Der Exportbefehl kann auf zwei Arten durchgeführt werden
  # export c
  # export c
  # sh
  # sh
  sh-3.00# echo $c
  sh-3.00# echo $c
  11
  11
In der gerade dargestellten ersten Variante wurde die Variable c aus dem vorangegangenen Beispiel exportiert.
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.
* 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:
* Die zweite Methode sieht folgendermaßen aus
  # export z=1000
  # export z=1000
  # sh
  # sh
Zeile 55: Zeile 55:
  1000
  1000


===Variablen einsehen===
====Variablen einsehen====
Diesmal ist die Deklaration der Variablen und der Export mit nur einem einzigen Befehl durchgeführt worden.
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 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.
* 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.
* 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:
* Eine gekürzte Ausgabe könnte Folgendes enthalten
  # set | less
  # set | less
  a=5
  a=5
Zeile 73: Zeile 73:
  PATH=/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/usr/
  PATH=/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/usr/
  X11R
  X11R
Die Umgebungsvariablen können mit dem Kommando env eingesehen werden.
Die Umgebungsvariablen können mit dem Kommando env eingesehen werden
* Es ist ratsam, die Ausgabe mit less zu betrachten
* Es ist ratsam, die Ausgabe mit less zu betrachten


===Variablen löschen===
====Variablen löschen====
Variablen werden mit dem Befehl unset gelöscht.
Variablen werden mit dem Befehl unset gelöscht
* Um die Variablen aus den Beispielen weiter oben zu entfernen, geben Sie Folgendes ein:
* Um die Variablen aus den Beispielen weiter oben zu entfernen, geben Sie Folgendes ein
  # unset a
  # unset a
  # unset b
  # unset b
  # unset c
  # unset c
  Zur Überprüfung:
  Zur Überprüfung
  # set | less
  # set | less
  BASH=/bin/bash
  BASH=/bin/bash
  HISTSIZE=1000
  HISTSIZE=1000


Die Variablen a, b und c wurden gelöscht.
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
* Alternativ wäre auch eine Neuanmeldung möglich gewesen, denn es handelt sich um Shellvariablen, die bei einer Abmeldung nicht erhalten bleiben

Version vom 8. August 2024, 13:56 Uhr

Umgebungsvariablen und Shellvariablen

  • 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
  • Hierbei wird unterschieden zwischen 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