Environment-konfigurering

For enkelte applikasjoner er det nødvendig at spesielle environment-variabler er satt for at applikasjonen i det hele tatt skal fungere. Det kan f.eks. hende at nye filstier må legges inn i PATH eller MANPATH-variablene, eller at andre applikasjonsspesifikke variabler må settes (eks. FMHOME i FrameMaker).

Det er derimot ønskelig at brukerne skal slippe å vite om disse variablene -- de skal automatisk konfigureres inn i brukerens oppsett. Et filsett, env-config, i store sørger for dette.

I katalogen /store/etc/ENV ligger det en rekke filer ``ENV-*'' som forteller noe om hvlike environment-variabler som må settes. Disse filene hører til forskjellige filsett (teTeX, postgres95, osv.). Filsettet env-config inneholder dessuten noen default-variabler som det ikke passer å spesifisere i de andre filsettene (eks. TZ og XFILESEARCHPATH, samt standardverdier for PATH og MANPATH).

Alt hva vi behøver for å konfigurere brukernes environment-oppsett til vår applikasjon, er derfor å snekre i sammen en slik fil som spesifiserer hvilke variabler som må settes.

Konfigurasjonsfilenes format

La oss se på formatet som disse konfigusrasjons-filene har.

Hvordan benytte seg av det ferdiggenererte oppsettet

Applikasjonen env-config genererer filene /store/etc/src.sh og /store/etc/src.csh hver natt ved hjelp av en nightly command. De genererte filene er i henholdsvis bourne-shell og c-shell format, og kan ``sources'' av andre shell-oppstart-filer (eller interaktivt av brukerne) dersom det er ønskelig. Zsh genererer dessuten sin egen /store/skel/zshenv hver natt slik at den ikke behøver å source noen av disse filene.

Dersom applikasjoner ønsker å konfigurere dette selv, slik som f.eks. zsh gjør, er det ønskelig at koden i env-config benyttes. Eksempel på perl-kode følger:

require "$ENV{'TOPDIR'}/lib/environment/environ.pl"; %Env = &Env'read_env( "$ENV{'TOPDIR'}/etc/ENV" ); $Tekst_som_må_inkluderes_i_skript = &Env'build_env( %Env ); Den aktuelle teksten kan dermed plasserers hvor det måtte være ønskelig (eks. /store/skel/zshenv). ``&Env'build_csh_env'' kan også benyttes istedenfor ``&Env'build_env'' dersom csh-syntaks er ønskelig.

Filsett som skal benytte seg av environment-konfigurasjonene bør settes til å ha dependency env-config (dette gjelder f.eks. zsh). Hvis ikke dette blir gjort vil ikke:


eSk