Min opsætning af ksh og xterm i OpenBSD

Noter fra 2004.

Min opsætning af ksh og xterm
Lars Sommer, 2004-08-20 
lasg@lasg.dk

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.


Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *