Skallprogrammet /bin/bash (heretter referert som
“skallet”) bruker en samling
oppstartsfiler for å hjelpe til å lag et miljø å kjøre i. Hver fil
har en spesifikk bruk og kan påvirke pålogging og interaktive miljøer
annerledes. Filene i /etc
mappen gir
globale innstillinger. Hvis en tilsvarende fil finnes 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
ikke-påloggingsskall startet på kommandolinjen (f.eks., [prompt]$
/bin/bash). Et ikke-interaktiv
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 kommandoer.
For mer informasjon, se info bash under Bash Startup Files and Interactive Shells seksjonen.
Filene /etc/profile
og ~/.bash_profile
leses når skallet er startet som et
interaktivt påloggingsskall.
Grunnfilen /etc/profile
nedenfor setter
noen miljøvariabler som er nødvendige for morsmålsstøtte. Å sette de
riktig resulterer i:
Utdataene fra programmer oversatt til morsmålet
Riktig klassifisering av tegn i bokstaver, sifre og andre klasser. Dette er nødvendig for bash å akseptere ordentlig ikke-ASCII tegn i kommandolinjer i ikke-engelske språk
Riktig alfabetisk sorteringsrekkefølge for landet
Passende standard papirstørrelse
Riktig formatering av penge-, tids- og datoverdier
Erstatt <ll>
nedenfor
med koden på to bokstaver for ønsket språk (f.eks., “en”) og
<CC>
med
tobokstavskoden for det aktuelle land (f.eks., “GB”).
<charmap>
bør
erstattes med den kanoniske tegntabellen for din valgte lokalitet.
Valgfri modifikatorer som f.eks “@euro” kan
også være tilstede.
Listen over alle lokaliteter som støttes av Glibc kan fås ved å kjøre følgende kommando:
locale -a
Tegntabeller kan ha en rekke aliaser, f.eks., “ISO-8859-1” er
også referert til som “iso8859-1” og “iso88591”.
Noen applikasjoner kan ikke håndtere de forskjellige synonymene
riktig (f.eks. kreves det at “UTF-8” er skrevet som “UTF-8”, ikke
“utf8”), så det er tryggest i de fleste
tilfeller for å velge det kanoniske navnet for en bestemt lokalitet.
Å bestemme det kanoniske navnet, kjør følgende kommando, hvor
<locale name>
er
utdataen gitt av locale
-a til din foretrukne lokalitet (“en_GB.iso88591” i vårt eksempel).
LC_ALL=<locale name>
locale charmap
For “en_GB.iso88591” lokaliteten, kommandoen over vil skrive ut:
ISO-8859-1
Dette resulterer i en endelig lokaleinnstilling på “en_GB.ISO-8859-1”. Det er viktig at lokaliteten funnet ved hjelp av heuristikken ovenfor testes på forhånd før det 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
Kommandoene ovenfor skal skrive ut språknavnet, tegnkoding som brukes av lokaliteten, den lokale valutaen og prefikset før telefonnummeret for å ringe inn i landet. Hvis noen av kommandoene ovenfor mislykkes med en melding som ligner på den som vises nedenfor, betyr dette at lokaliteten din enten ikke var installert i Section 8.5, “Glibc-2.35” 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 lokalitet ved å bruke localedef kommandoen, eller vurder å velge en annen lokalitet. Ytterligere instruksjoner forutsetter at det ikke er slike feilmeldinger fra Glibc.
Andre pakker kan også fungere feil (men kanskje ikke nødvendigvis vise eventuelle feilmeldinger) hvis lokalenavnet ikke oppfyller deres forventninger. I disse tilfellene, å undersøke hvordan andre Linux distribusjoner støtter lokaliteten din kan gi noe nyttig informasjon.
Når de riktige lokale innstillingene er bestemt, oppretter du
/etc/profile
filen:
cat > /etc/profile << "EOF"
# Begin /etc/profile
export LANG=<ll>_<CC>.<charmap><@modifiers>
# End /etc/profile
EOF
“C” (standard) og “en_US.utf8” (det anbefalte for engelske brukere i USA) lokalitetene er forskjellige. “C” bruker US-ASCII 7-biters tegnsett, og behandler byte med det høye bitsettet som ugyldige tegn. Det er derfor, f.eks ls kommandoen erstatter dem med spørsmålstegn i det lokalet. Også et forsøk på å sende post med slike tegn fra Mutt eller Pine resulterer i ikke-RFC samsvars meldinger som sendes (tegnsettet i den utgående posten er indikert som “unknown 8-bit”). Så du kan bruke “C” bare hvis du er sikker på at du aldri trenger 8-bits tegn.
UTF-8 baserte lokaliteter støttes ikke godt av noen programmer. Det pågår arbeid med å dokumentere og om mulig fikse slike problemer, se https://www.linuxfromscratch.org/blfs/view/11.1/introduction/locale-issues.html.