Les fichiers de démarrage du shell Bash

Le programme shell /bin/bash (que l'on nommera simplement "le shell" à partir de maintenant) utilise une collection de fichiers de démarrage pour aider à la création d'un environnement de travail. Chaque fichier a une utilisation spécifique et peut affecter différemment la connexion et les environnements interactifs.

Un shell interactif de connexion est lancé après une identification positive avec /bin/login en lisant le fichier /etc/passwd. Un shell interactif, sans login, est lancé à la ligne de commande (c'est-à-dire [prompt]$/bin/bash). Un shell non-interactif est présent habituellement lorsqu'un script shell tourne. Il est non interactif parce qu'il exécute un script et n'attend pas d'entrée utilisateur entre les commandes.

Pour plus d'informations, voir info bash -- Noeuds: Bash Startup Files et Interactive Shells.

Les fichiers suivants sont nécessaires pour s'assurer que l'environnement correct est lu pour chacune des façons dont le shell peut être appelé: /etc/profile, /etc/bashrc, ~/.bash_profile et ~/.bashrc. Le fichier ~/.bash_logout n'est pas utilisé pour une invocation du shell. Il est lu par le shell quand un utilisateur se déconnecte du système. Les fichiers /etc/profile et ~/.bash_profile sont lus quand le shell est invoqué comme shell interactif de connexion. Le fichier ~/.bashrc est lu quand le shell est invoqué comme shell interactif sans fonction de connexion.

Voici la base d'un /etc/profile. Les commentaires sur ce fichier devraient expliquer tout ce dont vous avez besoin. Pour plus d'informations sur les séquences d'échappement que vous pouvez utiliser pour votre invite (par exemple, la variable d'environnement PS1), voir info bash -- Noeud: Imprimer une invite.

# Début /etc/profile
# Ecrit pour Beyond Linux From Scratch
# par James Robertson <jameswrobertson@earthlink.net>

# Variables d'environnement globales et programmes de démarrage

# Les alias et fonctions systèmes doivent aller dans /etc/bashrc. Les
# variables d'environnement et les programmes de lancement personnels doivent
# aller dans ~/.bash_profile. Les alias et fonctions personnels doivent aller
# dans ~/.bashrc.

# Fonction d'aide à la gestion des chemins.
pathman () {
	if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
		if [ "$2" = "last" ] ; then
			PATH=$PATH:$1
		else
			PATH=$1:$PATH
		fi
	fi
}

# Ajout au chemin standard.
if [ $(id -u) = 0 ] ; then
	if [ -d "/usr/local/sbin" ] ; then
		pathman /usr/local/sbin last
	fi
fi

if [ $(id -u) != 0 ] ; then
	if [ -d "/usr/local/bin" ] ; then
		pathman /usr/local/bin last
	fi
fi

if [ -d "/usr/X11R6/bin" ] ; then
	pathman /usr/X11R6/bin last
fi

# Configuration de quelques variables d'environnement.
HISTSIZE=1000
PS1="[\u@\h \w]\\$ "

# Configuration de la variable d'environnement INPUTRC.
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ] ; then
	INPUTRC=/etc/inputrc
fi

# Configuration de /bin/ls pour activer le support de la couleur, l'alias se
# trouve dans /etc/bashrc.
if [ -f "/etc/dircolors" ] ; then
	eval $(dircolors -b /etc/dircolors)

	if [ -f "$HOME/.dircolors" ] ; then
		eval $(dircolors -b $HOME/.dircolors)
	fi
fi

export PATH HISTSIZE PS1 LS_COLORS INPUTRC

# Fin /etc/profile

Voici la base d'un /etc/bashrc. Les commentaires dans le fichier devraient expliquer tout ce dont vous avez besoin.

# Début /etc/bashrc 
# Ecrit pour Beyond Linux From Scratch 
# par James Robertson <jameswrobertson@earthlink.net>

# Les alias et fonctions systèmes

# Les alias et fonctions systèmes doivent aller dans /etc/bashrc. Les
# variables d'environnement et les programmes de lancement personnels doivent
# aller dans ~/.bash_profile. Les alias et fonctions personnels doivent aller
# dans ~/.bashrc.

# Par défaut, nous voulons mettre en place le masque utilisateur (umask).
# Même pour les shells non interactifs et sans login.
if [ "$(id -gn)" = "$(id -un)" -a $(id -u) -gt 99 ] ; then
	umask 002
else
	umask 022
fi

# Met à disposition une commande /bin/ls colorisée. Utilisé avec du code de
# /etc/profile.
alias ls='ls --color=auto'

# Fin /etc/bashrc

Voici la base d'un ~/.bash_profile. Les commentaires dans le fichier devraient expliquer tout ce dont vous avez besoin.

# Début ~/.bash_profile
# Ecrit pour Beyond Linux From Scratch
# par James Robertson <jameswrobertson@earthlink.net>

# Variables d'environnement et programmes de lancement personnels.

# Les alias et fonctions systèmes doivent aller dans /etc/bashrc. Les
# variables d'environnement et les programmes de lancement personnels doivent
# aller dans ~/.bash_profile. Les alias et fonctions personnels doivent aller
# dans ~/.bashrc.

if [ -f "$HOME/.bashrc" ] ; then
	source $HOME/.bashrc
fi

if [ -d "$HOME/bin" ] ; then
	pathman $HOME/bin last
fi

export PATH 

# Fin ~/.bash_profile

Voici la base d'un ~/.bashrc. Les commentaires dans le fichier devraient expliquer tout ce dont vous avez besoin.

# Début ~/.bashrc
# Ecrit pour Beyond Linux From Scratch
# par James Robertson <jameswrobertson@earthlink.net>

# Alias et fonctions personnels.

# Les alias et fonctions systèmes doivent aller dans /etc/bashrc. Les
# variables d'environnement et les programmes de lancement personnels doivent
# aller dans ~/.bash_profile. Les alias et fonctions personnels doivent aller
# dans ~/.bashrc.

if [ -f "/etc/bashrc" ] ; then
	source /etc/bashrc
fi

# Fin ~/.bashrc

Voici la base d'un ~/.bash_logout. Les commentaires dans le fichier devraient expliquer tout ce dont vous avez besoin.

# Début ~/.bash_logout
# Ecrit pour Beyond Linux From Scratch
# par James Robertson <jameswrobertson@earthlink.net>

# Eléments personnels exécutés à la fin de la connexion.

# Fin ~/.bash_logout

Si vous voulez utiliser les fichiers /etc/dircolors ou ~/.dircolors appelés à partir de /etc/profile, alors lancez respectivement ceci: /bin/dircolors -p > /etc/dircolors ou ceci: /bin/dircolors -p > ~/.dircolors. Le fichier dans le répertoire /etc devrait être utilisé pour des configurations globales, et s'il en existe un dans votre répertoire personnel, il surpassera les configurations globales. Il pourrait être une bonne idée de créer un fichier de base .dircolors et de le placer dans le répertoire /etc/skel pour les nouveaux utilisateurs.

Ian Macdonald a écrit une excellente collection d'astuces en tout genre pour améliorer l'environnement de votre shell. Vous pouvez la lire en ligne sur http://www.caliban.org/bash/index.shtml.