Bash: Unterschied zwischen den Versionen
Dirk (Diskussion | Beiträge) |
Boenki (Diskussion | Beiträge) K typos |
||
Zeile 20: | Zeile 20: | ||
$ | $ | ||
Die bash gilt generell als sehr | Die bash gilt generell als sehr komplex, und wird von einigen Anwendern auch als etwas unhandlich beschrieben, ist allerdings dennoch quasi die Standard-Shell unter Linux. Sie ist vollständig zur „Original-Shell“ (sh) kompatibel und unterstützt viele Befehle der Korn-Shell (ksh) und der Z-Shell (zsh). | ||
== Verwendung == | == Verwendung == |
Version vom 16. Januar 2009, 14:14 Uhr
Der richtige Titel für diesen Artikel lautet bash. Dies ist aus technischen Gründen derzeit jedoch nicht möglich.
Um mit dem Betriebssystem zu interagieren, und teilweise auch, damit das Betriebssystem selbst arbeiten kann, bedarf es eines Interpreter-Programms, dass die eingegebenen Befehle an das System weiterreicht. Unter Unix, und Unix-verwandten Systemen wird dieser Kommandozeileninterpreter Shell genannt. Unter Arch ist diese Shell standardmäßig die bash.
Über die bash
Wenn man ein System installiert, installiert man auch gleich die bash mit, da sie ein wichtiger Teil des Systems ist. Um nach dem Einloggen zu sehen, welche Shell man gerade benutzt, kann man sich zum Beispiel folgenden Befehles bedienen
ps -o cmd= -p $$
„ps“ listet Prozesse auf, „-o cmd=“ definiert, dass nur der Prozessname angezeigt werden soll, und „-p“ definiert, dass nur der Prozess angezeigt werden soll, dessen Prozess-ID man angibt. „$$“ gibt die ID des aktuellen Prozesses zurück. Da die Shell ebenfalls als Prozess gesehen wird, gibt „$$“ die Prozess-ID der Shell zurück, in der man sich gerade befindet.
$ ps -o cmd= -p $$ bash $
Wenn man nun wissen will, welche bash-Version man verwendet, bedient man sich des Parameters „--version“
$ bash --version GNU bash, version 3.2.48(1)-release (i686-pc-linux-gnu) Copyright (C) 2007 Free Software Foundation, Inc. $
Die bash gilt generell als sehr komplex, und wird von einigen Anwendern auch als etwas unhandlich beschrieben, ist allerdings dennoch quasi die Standard-Shell unter Linux. Sie ist vollständig zur „Original-Shell“ (sh) kompatibel und unterstützt viele Befehle der Korn-Shell (ksh) und der Z-Shell (zsh).
Verwendung
Wie bereits angesprochen ist die bash die Standard-Shell unter Arch. Von daher bedarf es keiner sonderlichen Maßnahmen, um die bash zu verwenden, einfaches einloggen reicht. Unter grafischen Umgebungen erreicht man die bash über einen Terminal-Emulator wie xterm, Konsole, gnome-terminal, etc.
Um die bash explizit zu starten, benutzt man einfach den Befehl „bash“, nachfolgende Befehlsfolge verdeutlicht dies.
$ echo $$ # Die PID der aktuellen Shell ausgeben 5450 $ bash $ echo $$ 5711 dirk@arbeit:~$ exit exit dirk@arbeit:~$ echo $$ 5450 $
Zuerst wird die Prozess-ID der aktuellen Shell angezeigt, dann wird die bash gestartet, und die Prozess-ID erneut angezeigt, dies ist nun eine andere als beim ersten Mal, da man sich ja nicht mehr in der ersten bash befindet. Die bash wird dann verlassen, und man befindet sich wieder in der bash, mit der man angefangen hat.
Da die bash selbst ja ein Kommandointerpreter ist, bietet sie selbst keine eigenen Programmfunktionen, außer eben dem Interpretieren und weiterreichen von Befehlen, und dem zurückreichen des Ergebnisses. Allerdings lässt sich die bash durch viele Scripte, Parameter, und Konfigurationen – zum Beispiel in der bashrc – stark an die eigenen Bedürfnisse anpassen.
Beispiele
Nachfolgend drei praxisnahe Beispielverwendungen der verschiedenen bash-Aufrufe. In dem Wiki-Artikel zur .bashrc sind weitere Beispiele aufgeführt, die zeigen, wie man sich die bash anpassen kann.
Shellscript
Wenn man ein Shellscript schreibt, kann man am Anfang der Datei mit dem sogenannten „Shebang“ bestimmen, dass die bash verwendet werden soll.
#!/bin/bash echo $$
… dann der Aufruf …
$ echo $$ 6577 $ chmod +x script $ ./script 6604 $ echo $$ $
Für das Script wird eine eigene Bash gestartet, innerhalb dieser das Script dann abgearbeitet wird. Nach Beendigung des Scriptes wird diese bash wieder verlassen.
Befehlsübergabe
Anstatt mittels Shellscript kann man an die bash beim Aufruf auch Befehle übergeben, die dann im Kontext dieser bash abgearbeitet werden. Danach wird die bash wieder verlassen.
$ echo $$ 6222 $ bash -c 'echo $$' 6240 $ echo $$ 6222 $
Im Kontext der aufgerufenen Bash wird der echo-Befehl ausgeführt. Wenn man die Angabe nach „-c“ in doppelte Anführungszeichen setzen würde, würde die bash diese vor dem Aufrufen schon bearbeiten, und „$$“ durch die aktuelle Prozess-ID ersetzen. Durch die einfachen Anführungszeichen wird der Befehl ungeparst übergeben.
Andere Konfigurationsdateien
Vermutlich hat man sich seine bash durch die Standard-Konfigurationsdateien angepasst. Wenn man nun etwas testen möchte, und sichergehen will, dass dies auch ohne die eigenen Anpassungen funktioniert, ruft man sich eine bash auf, wo dies deaktiviert ist.
$ myip 91.00.00.51 $ bash --norc --noprofile $ myip bash: myip: command not found $ exit exit $ myip 91.00.00.51 $
Mit diesem Aufruf werden sowohl die Datei „.bashrc“ als auch die Datei „.bash_profile“ ignoriert, welche bei mir nichts weiter macht, als die „.bashrc“ auszuführen.
Man kann sich auch eine weitere „.bashrc“ anlegen, und der bash mittels Parameter mitteilen, diese, anstatt der Standard-Datei zu verwenden.
$ bash -rcfile /pfad/zur/rc-datei