Moment, um das aufzuklären muss ich mal ein wenig ausholen. Denn sonst wird es kaum klar werden: Die csh ist die Shell, die ursprüngliche mal von Bill Joy für BSD geschrieben wurde. Über die Jahre hinweg ist die ursprüngliche csh in diverse Zweige divergiert, jedes BSD-Derivat hatte seine eigene Inkarnation. In einen dieser Zweige wurden Funktionen aus TENEX (aka TOPS-20) eingebaut. Die sich ergebende Shell nannte man dann "tcsh". Die tcsh hatte immer nur einen Hauptentwicklungszweig, es gibt also nur diese eine Inkarnation der tcsh.
Da die tcsh als Verbesserung der csh gedacht war, musste sie zu dieser möglichst kompatibel bleiben. Scripte sollten weiter laufen, unbedarfte Nutzer sollten sich nicht umstellen müssen und so weiter. Daher hat die tcsh einen Emulationsmodus: Wenn die tcsh als "csh" aufgerufen wird, ist sie mit csh-Implementierung aus 4BSD kompatibel. Das kostet allerdings einige Features. Wird sie als "tcsh" aufgerufen, hat man die vollen Features, aber ist eben nicht mehr komplett zur csh kompatibel. In der Praxis ist das schon seit vielen Jahren kein Beinbruch mehr, man sollte daher tunlichst "/bin/tcsh" statt "/bin/csh" als Shell eintragen.
Der Drang mit der csh kompatibel zu bleiben, zeigt sich auch in den Konfigurationsdateien. Welche Datei an welchem Punkt im Startprozess aufgerufen wird, ist vom System abhängig. Eine Liste findet sich in der Manpage. Ein weiterer Faktor ist, ob es sich um eine Loginshell oder eine andere Shell handelt... Daher sollte man tunlichst seine eigene Konfiguration in ~/.tcshrc schreiben und nicht in ~/.cshrc. Bei ersterer Datei kann man sich sicher sein, dass unabhängig des Systems rauskommt, was man sich vorstellt.
Unter FreeBSD ist die Reihenfolge:
1. /etc/csh.cshrc
2. /etc/csh.login (nur Login-Shells)
3. ~/.tcshrc
4. ~/.cshrc (nur wenn ~/.tcshrc nicht existiert)
"set prompt = "`/bin/hostname -s`# "" kommt nun eben dadurch zustande, dass die Prompt-Variablen ein tcsh-Feature sind, was in csh nicht vorhanden sein musst (unter FreeBSD aber ist).
Kommen wir nun zur Tab-Vervollständigung. Die ist sehr weit konfigurierbar, aber ein gutes Verhalten erhält man mit:
Code:
# Use the history of commands to aid expansion
set autoexpand
# Autolisting of options only when a new character is appended
set autolist=ambiguous
# Autocompletion
set complete
Recht praktisch (vervollständigt das bereits eingegebene Kommando aus der Historie):
Code:
# History up and down
bindkey -k up history-search-backward
bindkey -k down history-search-forward
Die vollständige .tcshrc findest du unter:
https://github.com/Yamagi/dotfiles/blob/master/tcsh/tcshrc