Użytkownicy FreeBSD dobrze wiedzą, że powłok dostarczanych z systemem jest niewielki wybór, a w zasadzie tylko dwie – sh i (t)csh.
Można zadać sobie pytanie, dlaczego używać csh? – Otóż chociażby dlatego, że jest to domyślna powłoka użytkownika root, jest lekka i co najważniejsze – podczas aktualizacji świata będzie na pewno działać, w przeciwieństwie do wszechobecnego w najróżniejszych dystrybuacjach Linuksa, bash-a, czy ,,ciężarnego‘’ zsh zbudowanego z portów.
Dlaczego owe powłoki miałyby nie działać w takiej sytuacji – a właśnie dlatego:
tlhscd@arsenic:~ $ ldd /usr/local/bin/bash /usr/local/bin/bash: libncurses.so.8 => /lib/libncurses.so.8 (0x8006e7000) libintl.so.9 => /usr/local/lib/libintl.so.9 (0x800834000) libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x80093d000) libc.so.7 => /lib/libc.so.7 (0x800b37000)
Po pierwsze primo – zależność od bibliotek, które również pochodzą z portów, a więc gdy ich wersje podskoczą odpowiednio do .10 i .4 – bash przestaje działać.
Po drugie primo, ultimo – podczas aktualizacji z jednego major release do następnego, zmianie ulec może również wersja np. libc.
Ponieważ (t)csh jest elementem tzw. świata, przy jego przebudowie nie ma obawy, że zostanie zlinkowany z nieaktualną biblioteką i tym samym przestanie się uruchamiać.
No dobra… do rzeczy, bo nie o tym miał być tekst – mnie osobiście zawsze denerwował fakt, że tytuł okna xterm nie zmieniał się przy logowaniu na zdalną maszynę (lokalnie – nazwa xterm od biedy wystarcza). Nie ma się co załamywać i zmieniać sobie powłoki (a tak – znam takie przypadki), tylko dopisać do .cshrc coś takiego:
if ($?TERM) then if ("$TERM" == "xterm") then set host=`hostname -s` alias precmd 'echo -n "ESC]0;${host}BEL"' endif endif
Sekwencje ESC i BEL, używając vi, uzyskujemy przez kolejne naciśnięcia kombinacji klawiszy: Ctrl-v Ctrl-[ oraz Ctrl-v Ctrl-G (powinno to wyglądać jak ^[ i ^G).
Gdy ktoś używa mcedit – ten sam efekt powinno dać się osiągnąć przez: Ctrl-q ESC ESC oraz Ctrl-q G.
No to jeszcze na koniec jakiś ładniejszy prompt (jedna linia):
set prompt = "%{\033[1;32m%}%n%{\033[1;0m%}@%{\033[1;31m%}%m%{\033[1;0m%}: %{\033[1;32m%}%~ %{\033[0m%}$ "