Académique Documents
Professionnel Documents
Culture Documents
18 ConfBash
18 ConfBash
Substitution de commandes 9
Message du jour. 10
Références 10
Le shell le plus connu et le plus répandu sous Linux est certainement le Bourne Again Shell (bash)
rédigé par Brian Fox et Chet Ramey. Bash est le shell standard fourni aux utilisateurs de Linux en
tant qu’interpréteur de commandes par défaut. La version actuelle de bash répond au standard
IEEE Posix Shell and Tool Specification.
Chaque lancement d’un shell s’accompagne de réglages. Cela se matérialise par ce que l’on
appelle des scripts des configuration. L’exemple le plus connu d’un tel script est certainement le
fichier /etc/profile, traité au démarrage de bash. Il contient les prescriptions et les définitions valides
pour tout utilisateur de l’ordinateur.
Lors de la création d’un compte utilisateur un interpréteur de commandes par défaut (login shell) lui
est associé. Ce login shell est défini dans le fichier /etc/passwd (le dernier champ contient le nom
du fichier exécutable) et est lancé automatiquement dès l’ouverture d’une session.
Lorsque bash est exploité en tant que login shell, alors le système cherche automatiquement un
fichier du nom de etc/profile. S’il existe et s’il contient des commandes de shell, alors elles sont
traitées. Cela se réalise sans que l’utilisateur puisse intervenir, et avec les droits de l’administrateur
(root). Après l’exécution des commandes du fichier, Linux adapte les droits en fonction l’utilisateur
déclaré lors de l’ouverture de la session.
De plus, le système passe au répertoire personnel de l’utilisateur. Ce répertoire est défini dans le
fichier etc/passwd. Le cinquième champ contient le chemin absolu de l’utilisateur. Pour plus de
clarté, le chemin est également inscrit dans la variable d’environnement HOME. Le tilde (~) est le
symbole de la variable d’environnement HOME.
Bash exécute, s’il existe le fichier /etc/profile. Ensuite, le premier des fichiers suivants rencontré est
exécuté : ~/.bash_profile , ~/.bashrc, ~/.bash_login.
© Stéphane Gill 2
Paramétrage de l’interpréteur de commandes
Fichier /etc/profile
Le fichier etc/profile est le fichier principal de la configuration de tous les utilisateurs de bash. On y
trouve notamment la définition de umask, du path, du prompt,… Ce fichier cherche aussi à
exécuter tous les scripts /etc/profile.d/*.sh
# /etc/profile
PATH="$PATH:/usr/X11R6/bin"
PS1="[\u@\h \W]\\$ "
ulimit -c 1000000
if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then
umask 002
else
umask 022
fi
USER=`id -un`
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
HISTFILESIZE=1000
INPUTRC=/etc/inputrc
export PATH PS1 USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE
INPUTRC
for i in /etc/profile.d/*.sh ; do
if [ -x $i ]; then
. $i
fi
done
unset i
© Stéphane Gill 3
Paramétrage de l’interpréteur de commandes
Fichier /etc/bashrc
Le fichier /etc/bashrc est le dernier script d'initialisation de bash. On y trouve notamment les alias
globaux. Il est le seul fichier d’initialisation qui est exécuté à chaque lancement de l’interpréteur de
commandes.
# /etc/bashrc
# Ce fichier est invoqué par ~/.bashrc
# Il n'existe pas obligatoirement
# .bashrc
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
© Stéphane Gill 4
Paramétrage de l’interpréteur de commandes
Il existe dans le système des variables prédéfinies dont on peut modifier le contenu. Le contenu de
ces variables est généralement défini dans les différents fichiers de configuration de l’interpréteur
de commande. Un exemple connu d’une telle variable est la variable PATH. Voici quelques-unes
de ces variables d’environnement :
Variable Signification
La liste des variables d’environnement est accessible par la commande : env. La commande echo
permet d'obtenir la valeur d'une telle variable. Pour que les variables définies dans les différents
fichiers soient accessibles par les commandes, on doit les exporter à l’aide de la commande export.
Exemple 1 :
© Stéphane Gill 5
Paramétrage de l’interpréteur de commandes
Exemple 2 :
Exemple 3 :
Exemple 4 :
Exemple 5 :
Lorsqu’il est exécuté de manière interactive, bash affiche le symbole d'accueil principal PS1 dès
qu'il est prêt à lire une commande, et le symbole d'accueil secondaire PS2 quand il a besoin de
© Stéphane Gill 6
Paramétrage de l’interpréteur de commandes
plus de données pour exécuter une commande. Bash permet de personnaliser ces chaînes
d'accueil, en insérant des séquences d'échappement spéciales (préfixées par un backslash) ayant
les significations suivantes :
Symbole Signification
\n retour-chariot
\u le nom de l'utilisateur
\# le numéro de la commande
\\ un backslash
31 =Rouge
32 =Vert
33 =Jaune
© Stéphane Gill 7
Paramétrage de l’interpréteur de commandes
34 =Bleu
35 =Magenta
36 =Blue clair
37 =Blanc
Bash offre aussi la variable PROMPT_COMMAND qui contient une commande à exécuter avant
d'afficher l'invite.
Exemple 1 :
Exemple 2 :
Obtenir le symbole d’accueil suivant : [login : hostname] rep_courant > (Le login et le
hostname sont en gras et de couleur rouge).
Exemple 3 :
© Stéphane Gill 8
Paramétrage de l’interpréteur de commandes
!"#$
Les fichiers CORE sont créés lors du plantage d'une application. Ils contiennent une image de la
mémoire (DUMP). À moins d'être développeur, ces fichiers souvent volumineux ne servent à rien,
sauf à prendre de la place.
Pour en limiter la taille, il suffit d’utiliser utiliser la commande: ulimit -c 0 (-c pour fichier CORE, et 0
pour la taille).
Un alias est une abréviation matérialisant une commande ou un groupe de mots dans une ligne de
saisie. La substitution d’un alias est effectuée avant toutes les autres substitutions dans la ligne de
commande.
alias Nom=texte
Le nom de l’alias ne doit pas commencer par un caractère spécial, mais il peut être composé de
lettres et de chiffres. Voici quelques exemples d’utilisation des alias.
Par la commande unalias, il est possible de supprimer des alias. Il est aussi possible de faire
apparaître la liste des alias déjà définis en utilisant la commande alias sans paramètre
© Stéphane Gill 9
Paramétrage de l’interpréteur de commandes
Exemple 1 :
Exemple 2 :
& ' (
/etc/motd est un fichier de texte ASCII dont le contenu est affiché lors du login d’un utilisateur.
Motd signifie message of the day, et il contient généralement des messages destinés aux
utilisateurs concernant l'administration du système (ajout de périphériques, arrêts prévus du
système, nouvelles versions de logiciels, etc...). Il nécessite nettement moins d'espace disque
qu'un courrier électronique envoyé à tous les utilisateurs.
© Stéphane Gill 10