<Précédent | Table des matières | Suivant>
Lorsqu'un shell de connexion se ferme, bash lit et exécute les commandes du fichier ~ / .bash_logout, s'il existe. Cette procédure est expliquée en détail dans le vous connecter et bash pages de manuel.
7.2.3. Un ensemble typique de fichiers d'installation
7.2.3.1. /etc/exemple de profil
Regardons certains de ces fichiers de configuration. D'abord / etc / profile est lu, dans lequel des variables importantes telles que
PATH, USER et HOSTNAME sont définis :
debby :~> chat /etc/profil
# /etc/profil
# Environnement à l'échelle du système et programmes de démarrage, pour la configuration de la connexion
# Les fonctions et les alias vont dans /etc/bashrc
# Manipulation de chemin
si [ `id -u` = 0 ] && ! echo $CHEMIN | /bin/grep -q "/sbin" ; alors CHEMIN=/sbin:$CHEMIN
fi
si [ `id -u` = 0 ] && ! echo $CHEMIN | /bin/grep -q "/usr/sbin" ; puis CHEMIN=/usr/sbin:$CHEMIN
fi
si [ `id -u` = 0 ] && ! echo $CHEMIN | /bin/grep -q "/usr/local/sbin" puis
CHEMIN=/usr/local/sbin:$CHEMIN
fi
si ! echo $CHEMIN | /bin/grep -q "/usr/X11R6/bin" ; puis CHEMIN="$CHEMIN:/usr/X11R6/bin"
fi
debby :~> chat /etc/profil
# /etc/profil
# Environnement à l'échelle du système et programmes de démarrage, pour la configuration de la connexion
# Les fonctions et les alias vont dans /etc/bashrc
# Manipulation de chemin
si [ `id -u` = 0 ] && ! echo $CHEMIN | /bin/grep -q "/sbin" ; alors CHEMIN=/sbin:$CHEMIN
fi
si [ `id -u` = 0 ] && ! echo $CHEMIN | /bin/grep -q "/usr/sbin" ; puis CHEMIN=/usr/sbin:$CHEMIN
fi
si [ `id -u` = 0 ] && ! echo $CHEMIN | /bin/grep -q "/usr/local/sbin" puis
CHEMIN=/usr/local/sbin:$CHEMIN
fi
si ! echo $CHEMIN | /bin/grep -q "/usr/X11R6/bin" ; puis CHEMIN="$CHEMIN:/usr/X11R6/bin"
fi
Ces lignes vérifient le chemin à définir : si racine ouvre un shell (user ID 0), on vérifie que / sbin, / usr / sbin et
/usr/local/sbin sont dans le chemin. Sinon, ils sont ajoutés. Il est vérifié pour tous ceux qui
/usr/X11R6/bin est dans le chemin.
# Aucun fichier core par défaut ulimit -S -c 0 > /dev/null 2>&1
# Aucun fichier core par défaut ulimit -S -c 0 > /dev/null 2>&1
Toutes les ordures vont à / dev / null si l'utilisateur ne modifie pas ce paramètre.
USER=`id -un` LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname` ISTSIZE=1000
USER=`id -un` LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname` ISTSIZE=1000
Ici, les variables générales reçoivent leurs valeurs propres.
si [ -z "$ENTRÉE" -a ! -f "$HOME/.inputrc" ]; puis INPUTRC=/etc/inputrc
fi
si [ -z "$ENTRÉE" -a ! -f "$HOME/.inputrc" ]; puis INPUTRC=/etc/inputrc
fi
Si la variable ENTRÉE n'est pas défini, et il n'y a pas .inputrc dans le répertoire personnel de l'utilisateur, le fichier de contrôle d'entrée par défaut est chargé.
Exporter PATH UTILISATEUR NOM DU JOURNAL MAIL HOSTNAME TAILLE HIST ENTRÉE
Toutes les variables sont exportées, afin qu'elles soient disponibles pour d'autres programmes demandant des informations sur votre environnement.
7.2.3.2. Le répertoire profile.d
pour i dans /etc/profile.d/*.sh ; faire si [ -r $i ] ; alors
. $ je
fi fait unset i
pour i dans /etc/profile.d/*.sh ; faire si [ -r $i ] ; alors
. $ je
fi fait unset i
Tous les scripts shell lisibles du /etc/profil.d répertoire sont lus et exécutés. Ceux-ci font des choses comme permettre couleur-ls, alias vi à entrain, définir les paramètres régionaux, etc. La variable temporaire i est désactivé pour l'empêcher de perturber le comportement du shell par la suite.
7.2.3.3. exemple .bash_profile
Ensuite bash cherche un .bash_profile dans le répertoire personnel de l'utilisateur :
debby :~> chat .bash_profile
################################################## ###############
# #
# .bash_profile fichier #
# #
# Exécuté depuis le shell bash lorsque vous vous connectez. #
# #
################################################## ###############
source ~/.bashrc source ~/.bash_login
Ce fichier très simple demande à votre shell de lire d'abord ~ / .bashrc et alors ~ / .bash_login. Vous rencontrerez le source commande shell intégrée régulièrement lorsque vous travaillez dans un environnement shell : elle est utilisée pour appliquer les modifications de configuration à l'environnement actuel.
7.2.3.4. exemple .bash_login
Le manuel de formation ~ / .bash_login fichier définit la protection de fichier par défaut en définissant le umask valeur, voir Section 3.4.2.2. Les ~ / .bashrc est utilisé pour définir un tas d'alias et de fonctions spécifiques à l'utilisateur et des variables d'environnement personnel. Il lit d'abord / Etc / bashrc, qui décrit l'invite par défaut (PS1) et la valeur umask par défaut. Après cela, vous pouvez ajouter vos propres paramètres. Sinon ~ / .bashrc existe, / Etc / bashrc est lu par défaut.
7.2.3.5. /etc/bashrc exemple
Votre / Etc / bashrc le fichier peut ressembler à ceci :
debby :~> chat /etc/bashrc
# /etc/bashrc
# Fonctions et alias à l'échelle du système
# Les éléments d'environnement vont dans /etc/profile
# par défaut, nous voulons que cela soit défini.
debby :~> chat /etc/bashrc
# /etc/bashrc
# Fonctions et alias à l'échelle du système
# Les éléments d'environnement vont dans /etc/profile
# par défaut, nous voulons que cela soit défini.
# Même pour les shells non interactifs et sans connexion.
if [ `id -gn` = `id -un` -a `id -u` -gt 99 ]; puis umask 002
d'autre
masque 022
fi
# Même pour les shells non interactifs et sans connexion.
if [ `id -gn` = `id -un` -a `id -u` -gt 99 ]; puis umask 002
d'autre
masque 022
fi
Ces lignes définissent le umask valeur. Ensuite, selon le type de shell, l'invite est définie :
# Sommes-nous un shell interactif ? if [ "$PS1" ]; alors
if [ -x /usr/bin/tput ]; alors
if [ "x`tput kbs`" != "x" ]; alors
# Nous ne pouvons pas faire cela avec le terminal "stupide" stty effacer `tput kbs`
elif [ -x /usr/bin/wc ]; alors
if [ "`tput kbs|wc -c `" -gt 0 ] ; alors
# Nous ne pouvons pas faire cela avec le terminal "stupide" stty effacer `tput kbs`
être être
fi
cas $TERM dans
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ] ; puis PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
d'autre
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:\
${PWD/$HOME/~}\007"'
fi
;;
*)
[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=\
/etc/sysconfig/bash-prompt-default
;;
Esac
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
if [ "x$SHLVL" != "x1" ]; then # Nous ne sommes pas un shell de connexion pour i dans /etc/profile.d/*.sh ; faire
si [ -x $i ] ; alors
. $ je
fi
fait
fi
fi
# Sommes-nous un shell interactif ? if [ "$PS1" ]; alors
if [ -x /usr/bin/tput ]; alors
if [ "x`tput kbs`" != "x" ]; alors
# Nous ne pouvons pas faire cela avec le terminal "stupide" stty effacer `tput kbs`
elif [ -x /usr/bin/wc ]; alors
if [ "`tput kbs|wc -c `" -gt 0 ] ; alors
# Nous ne pouvons pas faire cela avec le terminal "stupide" stty effacer `tput kbs`
être être
fi
cas $TERM dans
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ] ; puis PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
d'autre
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:\
${PWD/$HOME/~}\007"'
fi
;;
*)
[ -e /etc/sysconfig/bash-prompt-default ] && PROMPT_COMMAND=\
/etc/sysconfig/bash-prompt-default
;;
Esac
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
if [ "x$SHLVL" != "x1" ]; then # Nous ne sommes pas un shell de connexion pour i dans /etc/profile.d/*.sh ; faire
si [ -x $i ] ; alors
. $ je
fi
fait
fi
fi
7.2.3.6. exemple .bash_logout
Lors de la déconnexion, les commandes de ~ / .bash_logout sont exécutées, ce qui peut par exemple effacer le terminal, de sorte que vous ayez une fenêtre propre lors de la déconnexion d'une session à distance, ou en quittant la console système :
debby :~> chat .bash_logout
# ~/.bash_logout
clair
debby :~> chat .bash_logout
# ~/.bash_logout
clair
Examinons de plus près le fonctionnement de ces scripts dans la section suivante. Garder info bash à proximité.