Noter fra 2004.
Min opsætning af ksh og xterm Lars Sommer, 2004-08-20 [email protected] Med denne artikel vil jeg fortælle hvordan min shell og xterm er sat op, så de passer godt i mit arbejdsmiljø. Jeg vil beskrive de enkelte indstillinger på en måde, så du let kan lave noget lignende, der passer til dig. I min hverdag bruger jeg primært ksh som shell. Ksh er relativt lille, og indeholder alligevel alle de funktioner jeg har brug for. På min openbsd, hvor det reelt er pdksh jeg har, fylder den en smule over 300KB, og det er statisk lænket. Jeg foretrækker den statisk, da jeg også bruger den som root's shell. Ksh minder på mange måder om csh. De har begge en rimelig kraftig historiefunktion og fine scripting-muligheder. Jeg foretrækker sådan set csh's syntakt for brug af historiefunktionen, men det der gør at jeg alligevel vælger ksh, er dens mulighed for VI'ish editing mode. For dem der foretrækker emacs-agtig mode, tilbyder ksh også det. Ksh's rc-filer er den globale /etc/ksh.kshrc og den lokale ~/.profile. Jeg vil kun beskæftige mig med .profile, da den anden som default i Openbsd er meget pæn, og efter min mening ikke behøver ændringer. Jeg vil gennemgå min .profile lidt ad gangen her. PATH=$HOME/bin:$HOME/shellscripts:/usr/X11R6/bin:/bin:/sbin:/usr/bin:/usr/sbin\ :/usr/local/bin:/usr/local/sbin:/usr/games:. PATH er den variabel, der indeholder alle mapper med kommandoer og programmer, du let vil kunne finde via din shell. Mappenavnene er adskildt med kolon. Når du f.eks. skriver ls i din shell, søger shellen i mapperne listet i PATH, efter programmet ls, og kører så reelt (normalt) /bin/ls Shellen søger kronologisk, altså i førstnævnte mappe først. Derfor er det en god idé at skrive mapper som ~/bin først, hvis man nu engang laver sin eget ændrede udgave af ls, og lægger den der, så det er den der bliver brugt, når man blot skriver ls i sin shell. EDITOR=vi EDITOR-variablen sætter om du vil have ksh i en editor-mode, og i så fald hvilken du vil have den i. Sættes denne variabel ikke, har du en helt normal ksh. Sætter du den til vi, bliver linjeredigeringen i ksh ligesom når du redigerer tekst i vi. Det kan være lidt svært at vænne sig til, men efterhånden synes jeg det er ret effektivt og let. Hvis man i stedet er emacs-tilhænger, kan EDITOR sandelig sættes til emacs :) PWD=`pwd` HOST=`hostname -s` PS1='^[[00;32m${USER}@${HOST}: ${PWD} : ' Disse tre linjer særger for at give mig en smuk prompt. Det er de tre mest kryptiske linjer i min .profile, og de kan gøres langt værre at se på, hvis jeg ville have en endnu mere avanceret prompt. Første linje sørger blot for at PWD er mit aktuelle bibliotek. Anden linje for at HOST er lig med mit værtsnavn, og trejde linje sætter det hele lidt magisk sammen. En lidt simplere PS1, kunne se sådan ud: PS1='${USER}@${HOST}$ ' Den skriver så en prompt der for mig ville se sådan her ud: lasg@vanilje$ Grunden til variablene er sat i {}, er for explicit at fortælle hvad der er variablens navn. Det kryptiske i min PS1 nu, er ^[[00;32m Det betyder kort og godt, at teksten skal så normalt, men farvet grønt. hvis man sætter 00 til 01, bliver teksten fed, og ændrer man 32 til et andet tal, ændres farven. Der er sikkert en oversigt i manual-siden. Hvis du f.eks. kun vil have din promt farvet, og din alm. tekst normal (grå?), kan du afslutte din PS1 med ^[[0m. Det vigtigste du skal være opmærksom på, for overhoved at få farverne til at virke, er at ^[ ikke bare er ^[. Det er en escape-sekvens. du skriver ^[ i VI, ved at taste ctrl+v og så taste esc, mens du er i insert-mode. Den anden [ efter ^[, er en helt normal kantet parentes. Før jeg fortæller om resten af .profile, vil jeg lige vise den eneste forskel fra min normale .profile til min roots .profile, nemlig PS1'en: PS1='^[[01;31m${USER}@${HOST}: ${PWD} : ' Denne viser at når jeg skifter til root med su, bliver prompten og teksten fed, og rød. Det giver mig opmærksomhed på at jeg skal være lidt forsigtig med hvad jeg gør. Resten af min .profile kommer her: #søger for at skifte hele miljøet når du su'er, # så roots prompt også får fede farver alias su="su -l" #starter links op i grafisk udgave alias links="links -g" #starter links i konsoludgaven, til konsolbrug vel kun.. alias links-console="/usr/local/bin/links" #xcdroast har problemer med at finde devs i openbsd, og skal hjælpes alias xcdroast="xcdroast -f /dev/rcd0c;/dev/rcd1c" #giver mig en lækker xterm alias xterm="xterm -ls -r" export PATH HOME TERM Jeg har husket at skrive kommentarer til mine aliaser, så jeg bedre kan huske hvad de enkelte gør. Derfor vil jeg heller ikke gennemgå hver enkelt alias. De to der er værd at bemærke i denne her sammenhæng, er øverste og nederste. Det nederste vil jeg komme ind på om lidt, når jeg begynder at tale om xterm. Det øverste sørger for at læse roots .profile, samt cd'e til /root. På min primære arbejdsstation, arbejder jeg en del i X, og har derfor brug for en terminal. xterm er med næsten alle vegne, og den opfylder fint mine behov. Man kan både tilpasse fonte, størrelser og farver i den. Da jeg startede xterm første gang i min Openbsd, startede den op med hvid baggrund og sort tekst, med en størrelse som jeg havde svært ved at læse på afstand. Xterm har et smart menusystem, som tilgåes ved at holde ctrl nede, og trykke en af sine tre musetaster. Med højre musetast, kan man blandt andet vælge lidt skriftstørrelse, og med midterste kan man blandt andet vælge at invertere farverne (Reverse Video). Jeg fandt hurtigt ud af at man kunne starte den op inverteret, med parameteren -r eller -rv, og lavede derfor et alias til det, i min .profile. Man skal dog være opmærksom på at xterm ikke læser ens .profile ved opstart. Det tilgåes ved at starte med parameteren -ls. De to parametre forklarer det primære i sidste alias i min .profile. Jeg bruger fluxbox som windowmanager, og bruger dens menu til blandt andet at starte xterm'er fra. Derfor har jeg puttet en linje magen til xterms alias i .profile, i min menu-fil til fluxbox. Derudover starter min .xinitrc også en xterm for mig, sammen med X. i .xinitrc har jeg ligeledes måtte indskrive linjen "xterm -ls -r". Det eneste jeg mangler nu, er at sørge for min xterm starter med en større skriftstørrelse hver gang. Du skal tilføje en linje i filen .Xdefaults (måske .Xresources også kan bruges?). Hvis du ikke allerede har denne fil, kan du bare oprette den som alm. fil. Linjen der skal tilføjes, hvis du vil have xterm skal starte med skriftstørrelsealiaset large, ser sådan ud: XTerm.VT100.font: 9x15 Denne linje er sådan set også et alias, til en linje i filen: /usr/X11R6/lib/X11/fonts/misc/fonts.alias Denne fil indeholder en smuk oversigt over hvad 9x15 og mange andre muligheder egentlig er. Ved at tage et kig i denne fil, kan du nok let se hvad du skal skrive for at få din xterm med lille skrift, fed skrift, andre fonte og lignende. Jeg håber min lille artikel har givet dig lyst til at tilpasse din shell, prompt og xterm. Jeg synes selv man føler sig langt bedre tilpas ved at sidde i et miljø, der er tilpasset nøjagtigt som man vil have det. Du er velkommen til at kontakte mig, hvis du finder fejl i artiklen, eller har forslag, kommentarer eller spørgsmål.