K

- Base de connaissances

Accueil > Système > Linux > Configuration du shell : profil par défaut

Configuration du shell : profil par défaut

dimanche 4 novembre 2012, par webmestre

Qu’est-ce que le shell ?

Un shell permet d’interpréter les commandes saisies par l’utilisateur. Le shell par défaut - lancé dans chaque terminal à la connexion - est indiqué pour chaque utilisateur dans le fichier /etc/passwd, après le chemin de la racine de son compte.

Ainsi, on trouve la ligne suivante pour l’utilisateur user :

user:x:id:groupe:nom,bureau,tel_pro,tel_perso,autre:/home/user:/bin/bash

NB : Le GNU Bourne-Again SHell ( bash ) est un shell moderne recommandé (et proposé par défaut dans la distribution Debian et de nombreuses distributions) pour le système d’exploitation GNU.

Les fichiers de configuration

Les fichiers /etc/profile et /etc/bash.bashrc doivent être mis au point par l’administrateur pour définir un profil de base commun à tous les utilisateurs.

En effet, /etc/profile contient - s’il existe - le profil par défaut utilisé par bash au login de l’utilisateur ; bash tient ensuite compte de tout fichier .bashrc, .profile, .bash_profile ou .bash_login.

Variables d’environnement

Dans /etc/profile, on pourra définir et exporter les variables suivantes :

Variable Description
PATHle chemin par défaut des exécutables pour tous les utilisateurs, root inclus (par sécurité, on n’y inclut jamais le répertoire courant symbolisé par .)
PAGERl’outil de défilement du texte utilisé pour visualiser les pages de manuel
EDITORl’éditeur de fichier par défaut (variable exploitée par de nombreux programmes comme less et Mutt)
GREP_COLORla couleur pour mettre en valeur les occurences trouvées avec grep
LESSCHARSETle jeu de caractères utilisé par le programme less
PS1l’aspect de l’invite (prompt) du shell

Alias

Dans /etc/bash.bashrc, on peut redéfinir des commandes en déclarant des alias, exemple :

alias ls=’ls —color’la commande ls liste les fichiers avec différentes couleurs suivant leur suffixe
alias rm=’rm -i’la commande rm demande confirmation avant d’effacer un fichier
alias mv=’mv -i’idem pour la commande de déplacement mv
alias cp=’cp -i’idem pour la commande de copie cp
alias ll=’ls -l’raccourci pour afficher des informations complémentaires dans la liste des fichiers (taille, droits3.2, date de création...)
alias la=’ls -a’raccourci pour afficher les fichiers cachés

Exécuter la commande alias sans argument affiche tous les alias actuellement déclarés.

Un exemple de profil commun

Voici le contenu de mon fichier /etc/profile :

if [ "`id -u`" -eq 0 ]; then
  PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/games"
else
  PATH="/bin:/usr/bin:/usr/bin/X11:/usr/games:/usr/local/bin:/usr/local/games"
fi
PAGER="less"
LESSCHARSET="latin1"
GREP_COLOR="01;34"
PS1="\h \w [\$?] $ "
# Export environment variables
export PATH PAGER LESSCHARSET GREP_COLOR PS1
# At last, source bashrc file
source /etc/bash.bashrc
umask 022

Et celui de mon fichier /etc/bash.bashrc :

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi
# Common aliases
alias cp='cp -i'
alias df='df -hT'
alias du='du -h'
alias grep='grep --color'
alias ls='ls --color'
alias ll='ls --color -hl'
alias la='ls --color -a'
alias mv='mv -i'
alias rm='rm -i'
# For closing  removable media
alias close='eject -t'

La commande umask spécifie les droits appliqués par défaut lors de la création des fichiers : umask 022 autorise l’écriture par le propriétaire du fichier uniquement, mais l’exécution reste interdite par défaut (recommandé pour des raisons de sécurité).

Personnalisation du shell

Le fichier .bashrc permet à chaque utilisateur de personnaliser son shell . Ce fichier est cependant réservé aux non-login shells (lancement d’une xterm par exemple). C’est le fichier .bash_profile qui est pris en compte lors du login.

La plupart des utilisateurs feront peu de différences entre ces deux fichiers ; il leur suffit d’établir un lien symbolique de .bash_profile vers .bashrc pour simplifier leur configuration :

ln -s .bashrc .bash_profile

Pour les utilisateurs soucieux de respecter la hiérarchie login shell / non-login shells, il faut suivre les règles suivantes :

  • ce qui ne peut être configuré qu’une seule fois (i.e. au login shell) doit être placé dans le fichier .bash_profile : par exemple une déclaration récursive du path
  • ce qui doit être reconfiguré pour tout shell dans le fichier .bashrc : par exemple les variables non exportées.

Dans ce cas, pour bénéficier au login des réglages du fichier .bashrc, il suffit d’ajouter à la fin du fichier .bash_profile la commande :

source ~/.bashrc

Profil du super-utilisateur (root)

Si cela n’a pas été fait dans le fichier /etc/profile, il peut être nécessaire de compléter la variable d’environnement PATH dans le fichier .bash_profile :

PATH=/sbin :/usr/sbin :$PATH

Le fichier .bashrc pourra ressembler à celui d’un utilisateur normal.

Profil d’un utilisateur normal

Dans le fichier .bash_profile, on peut ajouter le répertoire courant dans le chemin (à proscrire pour le super-utilisateur) :

PATH=${PATH}:.

On peut définir ou redéfinir les variables d’environnement suivantes (la commande export est superflue) dans le fichier .bashrc :

HISTSIZE="50"bash garde en mémoire les 50 dernières commandes entrées au clavier
LD_LIBRARY_PATH="/usr/local/lib"cette variable d’environnement peut être nécessaire à certains programmes pour trouver les bibliothèques (libraries) installées manuellement

On peut enfin définir d’autres alias personnels, par exemple alias h=’fc -l’ et alias vi=’vim’ (pour utiliser le programme Vi IMproved, http://www.vim.org/).

Quelques liens utiles en complément de cet article :
http://vbeaud.free.fr/Informatique/PersoDebian/HTML/node5.html
http://www.tenshu.net/p/terminator.html
http://doc.ubuntu-fr.org/terminator

Répondre à cet article

Plan du site | Suivre la vie du site RSS 2.0 | powered by NYSTEK-EDITIONS and NYSTEK-CONSULTING