Sett opp et godt arbeidsmiljø ved å lage to nye oppstartsfiler for
bash skallet. Mens du
er logget inn som bruker lfs
, utsted
følgende kommando å lage en ny .bash_profile
:
cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF
Når du er logget på som bruker lfs
,
det første skallet er vanligvis et login skall som leser filen /etc/profile
fra verten (som sannsynligvis
inneholder noen innstillinger og miljøvariabler) og deretter
.bash_profile
. exec env -i.../bin/bash kommandoen
i .bash_profile
filen erstatter det
kjørende skallet med et nytt med et helt tomt miljø, bortsett fra
HOME
, TERM
, og
PS1
variabler. Dette sikrer at ingen
uønskede og potensielt farlige miljøvariabler fra vertssystemet
lekker inn i byggemiljøet. Teknikken som brukes her oppnår målet om å
sikre et rent miljø.
Den nye instansen av skallet er et non-login skall, som ikke leser, og
utfører, innholdet i /etc/profile
eller
.bash_profile
filer, men heller leser
og kjører .bashrc
filen istedet.
Opprett .bashrc
filen nå:
cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
CONFIG_SITE=$LFS/usr/share/config.site
export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
EOF
Betydningen av innstillingene i .bashrc
set
+h
set +h kommandoen
slår av bash's
hashfunksjon. Hashing er vanligvis en nyttig
funksjon—bash bruker en hashtabell for
å huske banen til kjørbare filer for å unngå å søke i
PATH
gang på gang for å finne den
samme kjørbare filen. Imidlertid bør de nye verktøyene brukes
så snart de er installert. Ved å slå av hashfunksjonen, vil
skallet alltid søke PATH
når et
program kjøres. Som sådan vil skallet finne de nylig kompilerte
verktøyene i $LFS/tools/bin
så
snart de er det tilgjengelig uten å huske en tidligere versjon
av det samme programmet levert av vertsdistroen, i /usr/bin
eller /bin
.
umask
022
Å sette brukerfilopprettingsmasken (umask) til 022 sikrer at
nye opprettede filer og mapper bare kan skrives av eieren, men
er lesbar og kjørbar av alle (forutsatt at standardmoduser
brukes av open(2)
systemkall, vil
nye filer ende opp med tillatelse modus 644 og mapper med modus
755).
LFS=/mnt/lfs
LFS
variabelen skal settes til det
valgte monteringens punkt.
LC_ALL=POSIX
LC_ALL
variabel styrer
lokaliseringen av visse programmer, slik at meldingene deres
følger konvensjonene i et spesifisert land. Innstillingen
LC_ALL
til “POSIX”
eller “C” (de to er likeverdige) sikrer at
alt fungerer som forventet i chroot miljøet.
LFS_TGT=(uname
-m)-lfs-linux-gnu
LFS_TGT
variabel setter en
ikkestandard, men kompatibel maskin beskrivelse for bruk når du
bygger vår krysskompiler og linker og når du krysskompiler vår
midlertidige verktøykjede. Mer informasjon finnes i Toolchain Technical
Notes.
PATH=/usr/bin
Mange moderne Linux distribusjoner har slått sammen
/bin
og /usr/bin
. Når dette er tilfelle, standard
PATH
variabel må settes bare til
/usr/bin/
for
Kapittel 6 miljøet. Når dette ikke er tilfelle, legger
følgende linje til /bin
til
stien.
if [ ! -L /bin ];
then PATH=/bin:$PATH; fi
Hvis /bin
er ikke et symbolsk
lenke, så må den legges til PATH
variabelen.
PATH=$LFS/tools/bin:$PATH
Ved å putte $LFS/tools/bin
foran
standard PATH
, krysskompilatoren
installert i begynnelsen av Kapittel 5
blir plukket opp av skallet umiddelbart etter installasjonen.
Dette, kombinert med å slå av hashing, begrenser risikoen for
at kompilatoren fra verten brukes i stedet for krysskompilator.
CONFIG_SITE=$LFS/usr/share/config.site
I Kapittel 5
og
Kapittel 6, hvis denne variabelen ikke er satt,
configure
skriptet kan forsøke å laste inn konfigurasjonselementer som er
spesifikke for enkelte distribusjoner fra /usr/share/config.site
på vertssystemet.
Overstyr det for å forhindre potensiell forurensning fra
verten.
export
...
Mens kommandoene ovenfor har satt noen variabler, i rekkefølge for å gjøre dem synlige innenfor eventuelle underskall, eksporterer vi dem.
Flere kommersielle distribusjoner legger til en ikke dokumentert
instansiering of /etc/bash.bashrc
til
initialisering av bash. Denne filen har potensial
til å endre lfs
brukerens miljø på
måter som kan påvirke byggingen av kritiske LFS pakker. For å sikre
at lfs
brukerens miljø er rent,
sjekk for nærvær av /etc/bash.bashrc
og flytt den ut av veienh vis den er tilstede. Som root
bruker, kjør:
[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
Etter at bruken av lfs
brukeren er
ferdig i begynnelsen av
Chapter 7, du kan gjenopprette /etc/bash.bashrc
(hvis ønsket).
Legg merke til at LFS Bash pakken vi vil bygge i Section 8.34,
“Bash-5.1.16” ikke er konfigurert til å laste eller
kjøre /etc/bash.bashrc
, så denne
filen er ubrukelig på et fullført LFS system.
Til slutt, å ha miljøet fullt forberedt for å bygge midlertidige verktøy, hente den nettopp opprettede brukerprofilen:
source ~/.bash_profile