IT-Academy Logo
Sign Up Login Help
Home - Betriebssysteme - Unix - Allgemeines - Environmentvariblen unter Unix



Environmentvariblen unter Unix

das konzept der environmentvariblen und deren handhabung durch die shell wird erklaert.


Autor: Franz Schaefer (mond)
Datum: 23-01-2002, 19:29:54
Referenzen: help set
help export
help declare
man bash
Schwierigkeit: Anfänger
Ansichten: 3797x
Rating: Bisher keine Bewertung.

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Übersicht

wir haben bis jetzt folgende moeglichkeit kennengelernt wie ein programm
zu seinen eingaben kommt:

* argumente und switches die es auf der kommandline bekommt
z.b.:

ls -l /tmp

* lesen von STDIN:
z.b.:

cat blabla.txt | grep blibli

zusaetzlich zu diesen 2 eingaben gibt es noch eine wichtige 3te:
ENVIRONMENT variablen. das ist eine liste von zuordnungen der art:

NAME=wert

wenn du auf der bash

set

siehst du eine lange liste dieser zuordnung die deine gegenwertige shell
verwaltet. diese NAMEN sind sogennante environmentvariablen. man kann sie
beliebig setzten:

z.b.

set TEST=blabla

oder einfach nur einitppen:

TEST=blabla

setzt die variable TEST mit dem inhalt "blabla"
die befehle zum setzen der variablen sind in den verschiedenen shells
leicht unterschiedlich, das konzept der environmentvariablen an sich aber
ist das selbe. wir behandeln hier nur die bash.

du kannst den inhalt der variable anschaun mit:

echo $TEST

dabei ersetzt die shell nachdem du das kommando eingegebenhast die
variable $TEST durch deren inhalt und ruft erst dann das programm echo
auf das dann nur noch den von der shell eingesetzten text ausgeben muss.

manche environement variablen haben fuer die shell selbst bedeutung. so
z.b. die variable PS1 die den normalen prompt (also den text den du am
anfang jeder kommandozeile siehst) festlegt. will man dass die shell beim
aufruf von programmen die variablen an diese uebergibt so muessen dies
variablen als exportierbar gesetzt werden

einen teil dieser environment variablen koennen auch alle programme abfragen
dazu muessen die variablen "exportiert werden":

export TEST="max meier"

(wir brauchen hier die anfuehrungszeichen weil wir in dem wert den wir
zuweisen ein leerzeichen drinnen haben.)

export -p

aufrufst bekommst du eine liste aller exportierten variablen.

(wenn du nun z.b. eine zweite bash "ueber" der aktuellen startest:

bash

und du

echo $TEST

so ist der wert immer noch verfuegbar. das programm hat diese environment
variable quasi "geerbt" ebenso wie alle anderen programme die von dieser
shell gestartet werden.)

hilfen zu den befehlen set und export bekommst du nicht ueber man sondern
weil diese befehle in der bash direkt eigebaut sind ueber die hilfe funktion
der bash:

help set

help export

du kannst beim zuweisen von werten auch rechnen. das geht mit dem bash
befehl "let"

let TEST=7*8*9+2

echo $TEST

ergibt: 506

wozu das ganze?

hier ein paar nuetzliche environmentvariablen:

TERM gibt den namen den typ des aktuellen terminals an. wenn du z.b. ein
telnet von windows oder alten terminals macht passiert es manchmal dass
bei interaktiven programmen wie mutt oder pine oder beim editor die
zeichen nicht richtig dargestllt werden und zeilen durcheinander kommen.
da ist meist der terminal typ falsch.

du gibst ein:

export TERM=vt100

und danach

reset

das reset setzt alle terminal eigenschaften anhand der TERM variable und
vt100 ist der kleinste gemeinsame nenner der fast ueberall funktioniert...

(reset ist auch nuetzlich einzutippen wenn dein terminal mal
durcheinandergeraten ist.. das loescht den bildschirm und setzt wieder
eine lesbare schrift...)

eine andere nuetzliche variable ist: EDITOR sie sollte den namen und pfad
deines lieblingseditors enhalten. also z.b. /usr/bin/joe

export EDITOR=/usr/bin/joe

diese zuweisung ist natuerlich nur in der aktuellen shell gueltig. will
man jedesmal beim einlogen diese einstellung der variablen gesetzt haben
so schreiben wir diese befehle am besten in eindes der files die beim
starten ausgefuehrt werden.

das waeren:

/etc/profile (wird fuer jede login shell aufgerufen. systemweit fuer alle
user)

im homeverzeichniss:

.bash_profile (wird fuer login shells (also welche bei denen man neu
eingelogt hat, aufgerufen.)

.bashrc (wird fuer jede neue bash aufgerufen ausser fuer login
shells)

ueblicherweise will man die EDITOR einstellung z.b. in jeder shell. man
schreibt sich daher in die .bashrc (mithilfe eines editors) z.b.:

export EDITOR=/usr/bin/joe

und ruft dann im .bash_profile das .bashrc auf (damit man es nicht 2mal
eintragen muss)

im .bash_profile eine zeile mit

. ~/.bashrc

(der punkt am anfang und dann zwischenraum heisst dass das file
includiert werden soll)

den wert einer variable NAME kannst du wie gesagt mit $NAME abfragen.
alternativ geht auch ${NAME} das ist nuetzlich wenn du beim ausgeben keine
zwischenraeume haben willst. z.b.:

echo X${TEST}X

wuerde den wert von TEST zwischen zwei X gesezt darstellen was sonst nicht
ginge...

so jetzt sezten wir uns noch dern prompt der bash neu:

PS1="\h:\w\$ "

setzte einen promt. die \h und \w werden von der bash durch die werte von
hostname und verzeichniss eresetzt. will man auch noch den usernamen haben
schreibt man z.b:

PS1='\u@\h:\w\$ '

das \$ wird fuer root durch ein fuer alle anderen durch ein $

mit

PS1='blabla '

haette man einfach den text "blabla " als prompt.

EXERCISES:

* versuchte mit dem "set" befehl environment variablen zu setzen und diese
dann mit der $NAME substitution der shell wieder abzufragen.

* verwende den let befehl zum rechnen

* exportiere mit export variablen, dann starte eine subshell (einfach bash
in der shell aufrufen) und schau ob du die variablen immer noch abfragen
kannst.

* experimentiere mit PS1 und setz dir einen schoenen aussagekraeftigen
prompt. trage diesen und die einstellung fuer EDITOR in dein .bashrc
ein. stell sicher dass die .bashrc auch im .bash_profile inkludiert
wird.

_______________________________________________
CD ist ein service von SILVER SERVER
der inhalt unterliegt der GFDL
_______________________________________________



[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04503
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16551
Queueeinträge:06238
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1137
Comments: 0