Bash, eller skallet, kan opprette en fil ved oppstart som gjelder for alle brukere, noe som kan være svært nyttig for mange forskjellige formål. Dette kan innebære å sette mange nyttige variabler for å legge til ny funksjonalitet i skallet, vanligvis for enkelhets skyld. Denne delen anbefales derfor, og oppsett av pakker i denne boken vil avhenge av denne delen og de opprettede filene. Det er liten ulempe med å følge denne delen med mindre du ikke kan kopiere og lime inn følgende kommandoer, i så fall vil det være mye skriving involvert. Det anbefales å gjøre dette i en chroot før du starter opp igjen i LFS systemet.
De fleste instruksjonene nedenfor brukes til å opprette filer som
ligger i /etc
mappestrukturen som
krever at du kjører kommandoene som root
bruker. Hvis du velger å opprette filene i
brukerens hjemmemapper i stedet, bør du kjøre kommandoene som en
ikke-privilegert bruker.
Det finnes flere oppstartsfiler som kan opprettes. De som er her, etablerer et grunnleggende oppsett samtidig som de er praktiske. For flere oppstartsfiler, se Oppstartsfilene til Bash Skallet.
Her er en grunnleggende /etc/profile
.
Denne filen starter med å sette opp noen hjelpefunksjoner og noen
grunnleggende parametere. Den spesifiserer noen bash historikkparametere og, av
sikkerhetshensyn, deaktiverer lagring av en permanent historikkfil
for root
bruker. Den angir også en
standard brukerledetekst. Deretter kaller den små skript i
/etc/profile.d
mappen for å gi
mesteparten av initialiseringen.
For mer informasjon om escape sekvensene du kan bruke for
ledeteksten din (dvs. PS1
miljøvariabelen) se info
bash -- Node: Printing
a Prompt.
cat > /etc/profile << "EOF"
# Begin /etc/profile
# Written for Beyond Linux From Scratch
# by James Robertson <jameswrobertson@earthlink.net>
# modifications by Dagmar d'Surreal <rivyqntzne@pbzpnfg.arg>
# System wide environment variables and startup programs.
# System wide aliases and functions should go in /etc/bashrc. Personal
# environment variables and startup programs should go into
# ~/.bash_profile. Personal aliases and functions should go into
# ~/.bashrc.
# Functions to help us manage paths. Second argument is the name of the
# path variable to be modified (default: PATH)
pathremove () {
local IFS=':'
local NEWPATH
local DIR
local PATHVARIABLE=${2:-PATH}
for DIR in ${!PATHVARIABLE} ; do
if [ "$DIR" != "$1" ] ; then
NEWPATH=${NEWPATH:+$NEWPATH:}$DIR
fi
done
export $PATHVARIABLE="$NEWPATH"
}
pathprepend () {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="$1${!PATHVARIABLE:+:${!PATHVARIABLE}}"
}
pathappend () {
pathremove $1 $2
local PATHVARIABLE=${2:-PATH}
export $PATHVARIABLE="${!PATHVARIABLE:+${!PATHVARIABLE}:}$1"
}
export -f pathremove pathprepend pathappend
# Set the initial path
export PATH=/usr/bin
# Attempt to provide backward compatibility with LFS earlier than 11
if [ ! -L /bin ]; then
pathappend /bin
fi
if [ $EUID -eq 0 ] ; then
pathappend /usr/sbin
if [ ! -L /sbin ]; then
pathappend /sbin
fi
unset HISTFILE
fi
# Set up some environment variables.
export HISTSIZE=1000
export HISTIGNORE="&:[bf]g:exit"
# Set some defaults for graphical systems
export XDG_DATA_DIRS=${XDG_DATA_DIRS:-/usr/share}
export XDG_CONFIG_DIRS=${XDG_CONFIG_DIRS:-/etc/xdg}
export XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/tmp/xdg-$USER}
for script in /etc/profile.d/*.sh ; do
if [ -r $script ] ; then
. $script
fi
done
unset script
# End /etc/profile
EOF
Nå oppretter du /etc/profile.d
mappen, der de individuelle initialiseringsskriptene plasseres:
install --directory --mode=0755 --owner=root --group=root /etc/profile.d
Dette skriptet legger til noen nyttige stier til PATH
og kan brukes til å tilpasse andre PATH
relaterte miljøvariabler (f.eks. LD_LIBRARY_PATH osv.) som kan
være nødvendige for alle brukere.
cat > /etc/profile.d/extrapaths.sh << "EOF"
if [ -d /usr/local/lib/pkgconfig ] ; then
pathappend /usr/local/lib/pkgconfig PKG_CONFIG_PATH
fi
if [ -d /usr/local/bin ]; then
pathprepend /usr/local/bin
fi
if [ -d /usr/local/sbin -a $EUID -eq 0 ]; then
pathprepend /usr/local/sbin
fi
if [ -d /usr/local/share ]; then
pathprepend /usr/local/share XDG_DATA_DIRS
fi
# Set some defaults before other applications add to these paths.
pathappend /usr/share/info INFOPATH
EOF
man programmet
utleder automatisk søkestien for manualsider ved å undersøke
innholdet i PATH
variabelen, se
manpath(5) for
detaljer. Innstilling av MANPATH
variabelen kan overstyre den automatiske utledningen, så BLFS
redaktørene anbefaler ikke å sette den. Hvis du må sette den av
en eller annen grunn, er det bedre å starte verdien med et
kolon (:
), for eksempel
MANPATH=:/opt/somepkg/share/man:/opt/otherpkg/share/man
så stiene som er oppført i MANPATH
variabelen vil bli lagt til den automatisk utledede verdien i
stedet for å overstyre den.
Dette skriptet setter opp standard inputrc
konfigurasjonsfil. Hvis brukeren ikke
har individuelle innstillinger, bruker den den globale filen.
cat > /etc/profile.d/readline.sh << "EOF"
# Set up the INPUTRC environment variable.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
INPUTRC=/etc/inputrc
fi
export INPUTRC
EOF
Innstilling av umask verdien er viktig for sikkerheten. Her er standard skrivetillatelser for gruppen slått av for systembrukere og når brukernavnet og gruppenavnet ikke er det samme.
cat > /etc/profile.d/umask.sh << "EOF"
# By default, the umask should be set.
if [ "$(id -gn)" = "$(id -un)" -a $EUID -gt 99 ] ; then
umask 002
else
umask 022
fi
EOF
Dette skriptet angir en miljøvariabel som er nødvendig for støtte for morsmål. En fullstendig diskusjon om hvordan du bestemmer denne variabelen finner du på Configuring the System Locale siden.
cat > /etc/profile.d/i18n.sh << "EOF"
# Set up i18n variables
for i in $(locale); do
unset ${i%=*}
done
if [[ "$TERM" = linux ]]; then
export LANG=C.UTF-8
else
export LANG=<ll>
_<CC>
.<charmap>
<@modifiers>
fi
EOF