(weitergeleitet von Main.BashrcKonfigurieren)
Beschreibung
Die "Bourne again Shell" (bash) ist Teil des GNU-Projekts. Ihr Name ist ein absichtlich zweideutiges Wortspiel und kann sowohl als "wiedergeborene (born again) Shell" als auch als "wieder einmal (eine) Bourne Shell" interpretiert werden. Geschrieben wurde die Bash größtenteils von Brian Fox und Chet Ramey Ende der 80er Jahre.
Die Bash ist voll kompatibel zur originalen Bourne Shell (sh), ist jedoch im Funktionsumfang erheblich erweitert. Vor allem beherrscht sie einen Großteil der Fähigkeiten der ksh, und versteht auch Teile der Syntax der csh, wie zum Beispiel die Command-History, den Directory-Stack, die $RANDOM-Variable und die POSIX-Form der Command-Substitution '$(...)'. Daneben sind auch eine ganze Reihe eigene Erweiterungen implementiert.
Die Bash ist die Standard-Shell (/bin/sh) auf vielen Linux-Systemen und wurde auf fast alle Unix-Systeme portiert. Seit Mac OS X 10.3 ist die Bash auch Standard-Shell des Mac-Betriebssystem. Vor 10.3 war die Tcsh die Standard-Shell.
Was ist bashrc ?
Die "unsichtbare" Datei .bashrc
ist die Konfigurationsdatei für die Bash-Shell.
Du solltest zunächst überprüfen ob dein System die Shell "Bash" verwendet, denn es gibt weitaus mehr und verschiedene die man zur Anwendung bringen kann. Ab MAC OS X 10.3 ist jedoch standardmäßig die "Bash" eingestellt und unsere Vorhaben sollte damit realisierbar sein. Dazu sollte man aber überlegen ob man diese systemweit oder nur User-bezogen einrichten möchte. Um eine systemweite Aktivierung zu ermöglichen, bearbeitet man als Root oder Sudo die Datei "/etc/bashrc
". Um nur sich selbst diesen Service zu ermöglichen, legt man im User-Home-Verzeichnis eine Datei ".bash_profile
" an. Überzeuge Dich aber vorher das nicht bereits eine Datei ".bash_login
" oder ".profile
" existiert. Diese würden nach Anlegen von ".bash_profile
" nicht mehr ausgeführt!
Steuertasten in der Shell
Mit der Cursortaste nach oben kann man die zuletzt eingetippten Befehle erneut aufrufen (history). Mit der Tab-Taste kann man einen angefangenen Befehl oder Pfad komplettieren lassen. In diesem Zusammenhang sind die folgenden Tastaturkürzel besonders interessant.
Wichtige Tastenkombinationen
Ctrl+A | Cursor zum Anfang der Zeile |
Ctrl+E | Cursor zum Ende der Zeile |
Ctrl+T | Vertauscht die Buchstaben links und rechts vom Cursor (ist der Cursor am Ende der Zeile die letzten beiden Buchstaben). |
Ctrl+K | Schneidet alles nach dem Cursor ab. |
Ctrl+Y | Fügt das zuletzt Ausgeschnittene wieder ein. |
Ctrl+L | Löscht den Bildschirm (Zeichenbuffer des Terminals). |
Ctrl+U | Schneidet alles vor dem Cursor aus. |
Ctrl+W | Schneidet das Wort vor dem Cursor. |
Bis auf die letzten drei Tastenkürzel funktionieren die Tastaturkurzbefehle übrigens auch in den meisten graphischen Benutzerprogrammen von Mac OS X.
Tipps
Farbe ins Terminal bringen
Es ist nicht schwer die Colors zu aktivieren, dazu sollte man aber überlegen ob man diese systemweit oder nur user-bezogen einrichten möchte. Um eine systemweite Aktivierung zu ermöglichen, bearbeitet man als Super-User (mit sudo
oder als root) die Datei "/etc/bashrc
". Um nur sich selbst diesen Service zu ermöglichen, legt man im User-Home-Verzeichnis eine Datei ".bash_profile
" an.
Eingetragen wird darin nur folgendes:
export TERM=xterm-color export CLICOLOR=true export LSCOLORS=FxGxdxhxcxbxexcxcxFxFx # Rot #export LSCOLORS=hxfxcxdxBxegedabagacad # Grau/Weiss #export LSCOLORS=ExGxFxdxCxDxDxBxBxExEx # Blau
Anschließend startet man den Computer neu oder restartet das Programm Terminal, je nach Gebrauch.
Sofortige Wirkung erzielt allerdings die Eingabe von "source /etc/bashrc".
Bei Anzeigen des List-Befehls (ls
) im Terminal sowie im SUT werden nun farbige Objekte angezeigt.
Mit einer #
(Raute) können in Dateien wie .bash_profile
Kommentare eingefügt werden. Text hinter der Raute bis zum Ende der Zeile wird nicht mehr ausgeführt und nicht beachtet. Dies kann man auch zum Auskommentieren (Deaktivieren) ganzer Zeilen nutzen, wie es oben bei den letzten beiden Zeilen (mit #
am Anfang) zu sehen ist.
Anmerkung
Es kann unter bestimmten Umständen zu Darstellungsproblemen im SUT führen wenn man die Colors systemweit aktiviert und eingestellt hat. Worauf das zurückzuführen ist, weiß ich bisher nicht. Nach einer nochmaligen Eingabe eines Befehls ist die Anzeige auf dem Bildschirm aber oftmals wieder normal. Es könnte also sein, dass diese Funktion nicht ganz ausgereift ist und noch Fehler verursacht. Anwendung also wie immer auf eigene Gefahr.
Alias verwenden
Alias-Dateien sind Abkürzungen und eine schöne Sache...
Die Formulierung lautet:
alias [meine Abkürzung]="[Befehl]"
folgende verwende ich:
alias .="pwd" alias ..="cd ..; pwd" alias ...="cd ../..; pwd" alias ls="ls -G" alias l="ls -Gla" alias p="ps xa | grep " alias g="grep"
Ändern des Shell-Prompts
Etwas Farbe muss her
Es gibt die Möglichkeit nach dem Aktivieren der Farben in der Bash den langweiligen, grau-weißen Eingabeprompt etwas bunter zu gestalten. Dies kann man ganz einfach mit der Variable PS1 tun. Ein echo dieser Variable zeigt das Standardformat:
barachiel@bastard:~$ echo $PS1 \u@\h:\w$
Mit dem Spezialcharakter \e[ kann man nun etwas Farbe in den langweiligen Promptalltag bringen:
export PS1="\e[1;32m\u\e[0;32m@\h:\e[1;32m\w\e[0;32m$\e[0m "
und schon ist das langweilige weiße Prompt in ein farbig, grünes New-Age Prompt verwandelt. Zur Erklärung: Der Charakter \e[ leitet eine Farbauswahl ein. Die direkt nachfolgende Ziffer gibt die Helligkeit der nachfolgenden Farbe an. 0 steht hierbei für normal, 1 für leuchtend hell und 2 für dunkel. Die mit Semikolon getrennte, nachfolgende Ziffer steht für den Farbcode. 0 bedeutet schwarz, 1 weiß, 31 rot, 32 grün, 33 blau usw. 8 einfach mal ausprobieren). Ein m schließt die Farbauswahl ab. Mit \e[0m stellt man die Farbe wieder zurück auf den Terminalstandard.
Hier ein Ausprobierskript:
#!/bin/bash i=0 while [ $i -le 110 ]; do echo -e "$i \e[${i}mtest\e[0m" i=$[$i+1] done
Doch Achtung
Bei \e[ handelt es sich um ein Escapezeichen, das zwar nicht angezeigt wird, jedoch sehr wohl als Charakter bei der Linienlängenberechnung zählt. Eine farbige Zeile bricht dann nicht mehr richtig am Ende des Fensters um und macht keinen Spaß. Um dem entgegenzuwirken, muss man jegliche Farbauszeichnungen mit \[ und \] einrahmen: \[\e[1;31m\]Farbig\[\e[0m\]. In den nachfolgenden Beispielen wird dies zwar berücksichtigt, trotzdem sollte man sich dies im Hinterkopf behalten.
Nun haben wir also ein farbiges Prompt. Doch es geht noch weiter: Mit der Variable PROMPT_COMMAND können wir ein Kommando festlegen das bei jeder Promptanzeige ausgeführt wird. Dies erlaubt uns, unser Prompt dynamisch aufzubauen:
PROMPT_COMMAND='PS1="\[\e[1;32m\]\u\[\e[0;32m\]@\h:\[\e[1;32m\]\w\[\e[0;32m\]\ \`if [ $? -ne 0 ]; then echo -n \"\[\e[1;31m\]:(\"; else echo -n \"\[\e[1;32m\]\ :)\"; fi\`\[\e[0;31m\]\$ \[\e[0m\]"' @@
Dies erstellt uns nun bei jedem Prompt neben dem schön, grünen Prompt ein grünes Smilie hinter der Pfadanzeige, falls der letzte Command den Rückgabewert 0 zurückgibt - also alles glattging. Sollte dies nicht so sein, wird stattdessen ein rotes, trauriges Smilie angezeigt.
Viel Spaß nun mit euren eigenen, farbigen Prompts :).
Verweise
- ADC - Shell Scripting Prime (engl.) – Einführung/Referenz für das Shellscripting