GästebuchIhr Eintrag in unser Gästebuch KontaktNehmen Sie Kontakt mit den Autoren auf ArchivAlle Unixwerk- Artikel seit 2003
07. September 2013

Tipp: ksh konfigurieren [update]

Inhalt

  1.  Einleitung
  2.  Allgemeines
  3.  Pfeiltasten für History
  4.  Prompt setzen

1. Einleitung

Wer von Linux zu einem proprietären Unix (AIX, Irix, Solaris, HP-UX) kommt, vermisst schnell den Komfort der Bash. Diese lässt sich zwar auf diesen Systemen auch installieren - doch ist dies vielleicht nicht erwünscht.

Die Korn-Shell (ksh) dagegen ist auf allen Systemen vorhanden. Sie lässt sich mit ein bisschen Konfigurationsarbeit so komfortabel gestalten, dass man die Bash nicht mehr all zu stark vermisst.

 

2. Allgemeines

a. ksh als Login-Shell
Ist die ksh Login-Shell, wertet sie beim Login die Dateien /etc/profile und .profile im Benutzer-Heimatverzeichnis aus.

Bei jedem weiteren Start dagegen werden diese Dateien nicht ausgewertet - stattdessen wird die Variable ENV ausgewertet. Damit die in diesem Dokument beschriebenen Konfigurationen immer zur Verfügung stehen, sollte die Variable ENV im .profile vererbt werden. Typischerweise:

 ENV=~/.kshrc
 export ENV

Alle beschriebenen Konfigurationen wandern dann in die Datei .kshrc.

Melden Sie sich direkt unter der grafischen Standard-Oberfläche CDE (Common Desktop Environment) an, wird die Datei .profile normalerweise nicht ausgewertet. Sie können dieses Standardverhalten ändern, indem Sie der Datei .dtprofile folgende Zuweisung hinzufügen (bzw. das Kommentarzeichen entfernen):

 DTSOURCEPROFILE=true

b. ksh ist nicht Login-Shell
Hier bleibt Ihnen nichts anders übrig als die Datei .kshrc in die Shellumgebung einzulesen («sourcen»):

$ ksh
$ . ~/.kshrc

 

3. Pfeiltasten für History

Zur Nachbildung der History-Funktion wie unter der bash tragen Sie folgende Sequenz in Ihre .kshrc ein:

 set -o emacs
 alias __A='^P'
 alias __B='^N'

 alias __D='^B'
 alias __C='^F'
 alias __H='^A'
 alias __F='^E'
 alias __G='^O'
 set -o emacs

Damit funktionieren die Pfeiltasten, Pos1 und Ende, die Suche mit Strg-R sowie die automatische Pfadnamen-Erweiterung (unter der bash als TAB-Funktion bekannt - doch dazu später)

Beachten Sie im obigen Listing, dass in den Alias-Zuweisungen ^P Strg-P, ^N Strg-N usw. bedeutet. Sie erreichen dies im vi, indem Sie zunächst Strg-V und dann den entsprechenden Control-Character eingeben (also Strg-V Strg-P usw eintippen).

Automatische Pfadnamenerweiterung
Die automatische Pfadnamenerweiterung (TAB-Funktion) haben Sie mit den obigen Einträgen auch bereits aktiviert -- jedoch benutzen Sie dazu nicht wie in der Bash die Tabulator-Taste sondern ESC ESC (2x ESC betätigen statt einmal TAB). Sie wirkt jedoch nur auf Pfadnamen - nicht auf Befehle!

Die Doppel-TAB-Funktion der Bash, mit der Sie alle passenden Erweiterungen bekommen, wird durch ESC = abgebildet.

 

4. Prompt setzen

Der Standard-Prompt der Korn-Shell ist recht schlicht: $ für normale Benutzer, # für root. Möchten Sie den Hostnamen, den aktuellen Pfad und evtl Ihren Benutzernamen in den Prompt einfließen lassen, setzen Sie die Variable PS1 entsprechend.

So ergibt

 
 PS1=$(uname -n):'$PWD# '
 export PS1
 

beispielsweise (Hostname=unix, aktuelles Verzeichnis=/tmp):

 unix:/tmp# _
 

Oder möchten Sie wissen, als welcher Benutzer Sie gerade arbeiten? Dann setzen Sie

 
 PS1=$USER@$(uname -n)':$PWD$ '
 export PS1
 

und es ergibt sich:

 root@unix:/tmp$ _
 

[update]

Schwieriger wird es, möchte man sein Heimatverzeichnis im Prompt mit der Tilde abkürzen, so wie es die Bash macht: Dazu muss zunächst eine Funktion definiert werden, die dann statt cd verwendet werden muss. Diese Funktion darf nicht cd genannt werden - da sich BUILTIN-Befehle der ksh nicht durch Funktionen überschreiben lassen! Es lässt sich aber im Anschluss ein Alias auf cd setzen, der auf die Funktion zeigt. So würde das Ganze in der ~/.kshrc dann aussehen:

function _setprompt
{
 PROMPT="$(uname -n):"$(echo $PWD | sed -e "s%$HOME%~%")'$ '
 export PS1="$PROMPT"
}

function _chdir
{
 \cd "$@"
 _setprompt
}

alias cd=_chdir
_setprompt

[/update]