7.7. Oppstartsfiler for Bash Shell

Skallprogrammet /bin/bash (heretter referert til som "skallet") bruker en samling oppstartsfiler for å skape et miljø å kjøre i. Hver fil har en spesifikk bruk og kan påvirke påloggings- og interaktive miljøer annerledes. Filene i /etc mappen inneholder globale innstillinger. Hvis det finnes en tilsvarende fil i hjemmemappen, kan den overstyre de globale innstillingene.

Et interaktivt påloggingsskall startes etter en vellykket pålogging ved hjelp av /bin/login, ved å lese /etc/passwd filen. Et interaktivt skall som ikke er pålogget, startes på kommandolinjen (f.eks. [ledetekst]$/bin/bash). Et ikke-interaktivt skall er vanligvis tilstede når et skallskript kjører. Det er ikke-interaktivt fordi det behandler et skript og ikke venter på brukerinndata mellom kommandoene.

For mer informasjon, se info bash under delen Bash Startup Files and Interactive Shells.

Filene /etc/profile og ~ /.bash_profile leses når skallet påkalles som et interaktivt påloggingsskall.

Basen /etc/profile nedenfor angir noen miljøvariabler som er nødvendige for morsmålsstøtte. Å sette dem riktig resulterer i:

  • Utdataen av programmer oversettes til morsmålet
  • Riktig klassifisering av tegn i bokstaver, sifre og andre klasser. Dette er nødvendig for at bash skal kunne godta ikke-ASCII-tegn på kommandolinjer på ikke-engelske språk
  • Riktig alfabetisk sorteringsrekkefølge for landet
  • Passende standard papirstørrelse
  • Riktig formatering av verdier for penger, tid og dato

Erstatt <ll> nedenfor med tobokstavskoden for ønsket språk (f.eks. "en") og <CC> med tobokstavskoden for det aktuelle landet (f.eks. "GB"). <charmap> bør erstattes med det kanoniske karakter oppsettet for det valgte stedet. Valgfrie modifikatorer som “@euro” kan også være til stede.

Listen over alle regionaldata som støttes av Glibc kan fås ved å kjøre følgende kommando:

locale -a

Karakterkart kan ha en rekke aliaser, for eksempel blir “ISO-8859-1” også referert til som “iso8859-1” og “iso88591”. Noen applikasjoner kan ikke håndtere de forskjellige synonymer riktig (for eksempel kreve at "UTF-8" er skrevet som "UTF-8", ikke "utf8"), så det er tryggest i de fleste tilfeller å velge det kanoniske navnet for en bestemt region. For å bestemme det kanoniske navnet, kjør følgende kommando, der <locale name> er utdata gitt av locale -a for din foretrukne region ("en_GB.iso88591" i vårt eksempel)

LC_ALL=<locale name> locale charmap

For “en_GB.iso88591” regionen, skrives kommandoen ovenfor ut slik:

ISO-8859-1

Dette resulterer i den endelige innstillingen for "en_GB.ISO-8859-1". Det er viktig at lokaliteten som ble funnet ved hjelp av heuristikken ovenfor, testes før den legges til Bash oppstartsfilene:

LC_ALL=<locale name> locale language
LC_ALL=<locale name> locale charmap
LC_ALL=<locale name> locale int_curr_symbol
LC_ALL=<locale name> locale int_prefix

Ovennevnte kommandoer skal skrive ut språknavnet, tegnkodingen som brukes av regionen, den lokale valutaen og prefikset før telefonnummeret for å ringe til landet. Hvis noen av kommandoene ovenfor mislykkes med en melding som ligner den som er vist nedenfor, betyr dette at regionaldataene dine ikke ble installert i kapittel 6 eller ikke støttes av standardinstallasjonen av Glibc.

locale: Cannot set LC_* to default locale: No such file or directory

Hvis dette skjer, bør du enten installere ønsket regionaldata ved hjelp av kommandoen localedef, eller vurdere å velge en annen region. Ytterligere instruksjoner antar at det ikke er slike feilmeldinger fra Glibc.

Noen pakker utover LFS kan også mangle støtte for den valgte regionen. Et eksempel er X biblioteket (en del av X Window System), som viser følgende feilmelding hvis regionaldataen ikke samsvarer nøyaktig med karakterkartet i de interne filene:

Warning: locale not supported by Xlib, locale set to C

I flere tilfeller forventer Xlib at tegnkartet vil bli oppført i store bokstaver med kanoniske streker. For eksempel "ISO-8859-1" i stedet for "iso88591". Det er også mulig å finne en passende spesifikasjon ved å fjerne karakterkart delen av stedsspesifikasjonen. Dette kan kontrolleres ved å kjøre locale charmap kommandoen på begge språkene. For eksempel må man endre "de_DE.ISO-8859-15@euro" til "de_DE@euro" for å få dette stedet anerkjent av Xlib.

Andre pakker kan også fungere feil (men viser ikke nødvendigvis noen feilmeldinger) hvis regionaldataen ikke oppfyller deres forventninger. I slike tilfeller kan det være nyttig informasjon å undersøke hvordan andre Linux distribusjoner støtter regionaldataen din.

Når de riktige regionaldataene er bestemt, oppretter du /etc/profile filen:

cat > /etc/profile << "EOF"
# Begin /etc/profile

 

export LANG=<ll>_<CC>.<karakterkart><@modifikatorer>

 

# End /etc/profile
EOF

Lokalitetene "C" (standard) og "en_US" (den anbefalte for engelske brukere i USA) er forskjellige. “C” bruker US-ASCII 7-bit tegnsett, og behandler byte med høyt bit sett som ugyldige tegn. Derfor erstatter f.eks. ls kommandoen dem med spørsmålstegn i det stedet. Et forsøk på å sende e-post med slike tegn fra Mutt eller Pine resulterer også i at ikke-RFC-samsvarende meldinger blir sendt (tegnsettet i utgående e-post er angitt som "ukjent 8-bit"). Så du kan bare bruke "C" regionaldataen hvis du er sikker på at du aldri trenger 8-biters tegn.

UTF-8 baserte regionaldata støttes ikke godt av noen programmer. Arbeidet pågår for å dokumentere og, hvis mulig, løse slike problemer, se http://www.linuxfromscratch.org/blfs/view/9.1/introduction/locale-issues.html.

Forrige Hjem Neste