Wichtung 4
Maaßen:
- Bash: Es handelt sich um eine Weiterentwicklung der ursprünglichen Unix-Shell sh (entwickelt von Stephen Bourne 1977). Die Bash wurde Ende der 80er Jahre von Brian Fox und Chet Ramey geschrieben. Bash kann als Wortspiel Bourne again Shell oder Born again Shell ausgelegt werden.
- Die Shell ist dafür da, um auf direktem Wege Informationen mit dem Kern(el) auszutauschen. Im Gegensatz zu den meisten administrativen Tätigkeiten eines Systems, die zwischenzeitlich über grafische Frontends getätigt werden können, werden Tätigkeiten der Systemverwaltung weiterhin über die Bash (Shell) ausgeführt.
Aufbau eines Shellkommandos
- Ein Shell Kommando besteht aus 3 Teilen:
- 1. das Kommando selbst: Dabei kann es sich um eine ausführbare Datei, ein Skript oder ein Shell-internen Befehl handeln
- 2. Option: gibt an, wie das Kommando ausgeführt werden soll
- 3. Argument: teilt dem Programm mit, welche Daten es verarbeiten soll
- Ein Kommando kann auch ohne Optionen oder Argumente ausgeführt werden (Beispiele siehe Post xy)
- Optionen werden im Allgemeinen mit einem Bindestrich (-) und einem Buchstaben aufgerufen. Es gibt weiterhin auch Programme, die ganze Wörter als Optionen verwenden, die dann mit einem doppelten Bindestrich (--) aufgerufen werden. Sind beide Optionen vorhanden, können diese auch innerhalb eines Aufrufes kombiniert werden
- Des Weiteren können Optionen und Argumente auch in beliebiger Reihenfolge aufgerufen werden. Dabei können mehrere Optionen und Argumente während eines Aufrufs verwendet werden: ~ mount -o username=antje,passowrd=xy //fs1/data /mnt/ -t smbfs
Umgebungsvariablen und Shellvariablen
- Variablen nehmen Werte auf. Diese können von einem Programm ausgewertet oder weiterverarbeitet werden
- Variablen können auch das Erscheinungsbild und Verhaltensweisen des Betriebssystem beeinflussen
- echo $Variable: Ausgabe der Variablen
- Umgebungsvariablen: Sie gelten für alle Shells, die ein Benutzer verwendet. Sie werden an Subshells weitervererbt (Automatischer Export bei Aufruf einer Subshell). Umgebungsvariabeln werden im Allgemeinen mit Großbuchtaben benamt
- Shellvariablen: Diese gelten nur für die Shell, in der sie deklariert wurden. Für jede durch den Benutzer aufgerufenen Subshell müssen diese Variablen neu deklariert werden. Üblicherweise werden für Shellvariablen Kleinbuchstaben verwendet
- Folgende Konfigurationsdateinen bestimmen, welche Umgebungsvariablen bei der Anmeldung eines Benutzers an einem System und welche beim Start weiterer Shells oder Skripte geladen werden:
- /etc/profile: Erste Datei, die bei der Anmeldung des Benutzers an einem System geladen wird. Sie enthält unter anderem die erste PATH-Anweisung. Änderungen an dieser Datei erfordern ein Ab- und Anmelden des Benutzers.
- /etc/bashrc: enthält systemweite Einstellungen, Aliase und Funktionen und wird von der ~/.bashrc eines Benutzers geladen. Diese Datei wird bei jedem Start einer neuen Shell geladen, wodurch Änderungen direkt wirksam werden
- ~/.bash_profile: (optional) Wird nur bei einer Neuanmeldung direkt nach der /etc/profile eingelesen. Die .bash_profile enthält zusätzliche Daten wie zusätzliche Pfadanweisungen (z.B. das Heimatverzeichnis), den Standardeditor und benutzerspezifische Umgebungsvariablen.
- ~/.bash_login: Alternative zu .bash_profile und wird auch nur dann abgearbeitet, wenn .bash_profile nicht vorhanden ist. Verwendung nur beim Anmeldevorgang, Inhalt siehe .bash_profile
- ~/.profile: Ursprüngliche Konfigurationsdatei der Bash. Einlesen nur während des Anmeldevorgangs und dann auch nur, wenn weder .bash_profile oder .bash_login vorhanden sind. Inhalt entsprechend der .bash_profile Datei
- ~/.bashrc: Wird in jedem Fall eingelesen, auch beim Aufruf einer neuen Shell. Entsprechend ist keine Neuanmeldung des Nutzers notwendig, nachdem Änderungen an dieser Datei vorgenommen wurden.
- ~/.bash_logout: (optional) Datei wird ausgeführt, wenn der Benutzer sich abmeldet, z.B. den Monitor löschen
- set | less Ausgabe aller aktuellen gesetzten Shellvariablen (empfohlen mit less, da Ausgabe recht umfangreich ist
- env | less Ausgabe aller Umgebungsvariablen
- Deklaration von Variablen: Eingabe der Variable verbunden durch ein Gleichheitszeichen mit dem zuweisenden Wert. Diese Variable ist aber nur in der Shell gültig, in der sie deklariert wurde, Weitervererbung an Subshells findet nicht statt
- export: Soll eine Variable auch innerhalb der Subshells gültig sein, so muss sie exportiert werden
- Öffnet man dann eine Subshell mit Hilfe des Befehls bash, steht die exportierte Variable auch dort zur Verfügung
- Deklaration und export können auch in einer Zeile zusammen gefasst werden:
export Name=xyz
- Eine Variable kann niemals in eine übergeordnete Shell exportiert werden, immer nur in untergeordnete
- Wird der Inhalt einer Variablen nicht mehr benötigt, sollte sie mit dem Kommando unset wieder zurückgesetzt werden. Am Anfang eines Skript bietet es sich ebenfalls an, alle Variablen mit unset erst einmal zurück zu setzen, damit man kein seltsames Verhalten produziert
Beliebte Variablen für die Prüfung
- $HISTSIZE Anzahl der Kommandos, die in der Befehls-History aufbewahrt werden. Variable wird in der /etc/profile festgelegt
- $PS1 Bestimmt das Aussehen der Eingabeaufforderung (Prompt) im Terminal
- Beispiel aus dem Buch:
root@archangel:~# echo $PS1
\u@\h:\w\$
- \u =>Username
- @ => wird normal ausgegeben
- \h: => Host-Name gefolgt durch einen Doppelpunkt
- \w => Working Directory (hier Home-Verzeichnis)
- \$ => Dieses Zeichen wird einfach ausgegeben
- $PS1-Variable kann den eigenen Wünschen in der /etc/bahsrc angepasst werden
- $? Errorlevel des zuletzt ausgeführten Kommandos. Der Wert 0 bedeutet im Allgemeinen, dass das letzte Kommando erfolgreich ausgeführt wurde. Fehlerwerte variieren von Programm zu Programm und bewegen sich zwischen 1 und 127
- $1, $2, usw. enthalten Optionen und Argumente, die an ein Programm übergeben werden. Im Normalfall werden sie von dem Programm oder Skript selbst ausgewertet