9.7. Fichiers de démarrage du shell Bash

Le programme shell /bin/bash (dénommé ci-après « le shell ») utilise une collection de fichiers de démarrage pour aider à la création d'un environnement d'exécution. Chaque fichier a une utilisation spécifique et pourrait avoir des effets différents sur les environnements de connexion et interactif. Les fichiers du répertoire /etc fournissent un paramétrage global. Si un fichier équivalent existe dans le répertoire personnel, il pourrait surcharger les paramétrages globaux.

Un shell interactif de connexion est lancé après une connexion réussie, en utilisant /bin/login, par la lecture du fichier /etc/passwd. Un shell interactif sans connexion est lancé en ligne de commande (c'est-à-dire [prompt]$/bin/bash). Un shell non interactif est habituellement présent quand un script shell est en cours d'exécution. Il est non interactif parce qu'il traite un script et n'attend pas une saisie de l'utilisateur entre les commandes.

Pour plus d'informations, voir info bash sous la section Bash Startup Files and Interactive Shells (Fichiers de démarrage de Bash et shells interactifs).

Les fichiers /etc/profile et ~/.bash_profile sont lus quand le shell est appelé en tant que shell interactif de connexion.

Le fichier /etc/profile de base ci-dessous configure quelques variables d'environnement nécessaires à la prise en charge native des langues. Les configurer convenablement permet ce qui suit :

Remplacez <ll> ci-dessous par le code à deux lettres de la langue désirée (par exemple, « fr ») et <CC> avec le code à deux lettres du pays approprié (par exemple, « FR »). <charmap> devra être remplacé avec le jeu de caractères canonique de la locale choisie. Des modificateurs optionnels comme « @euro » peuvent aussi être présents.

La liste de toutes les locales prises en charge par Glibc peut être obtenue en exécutant la commande suivante :

locale -a

Les locales peuvent avoir plusieurs synonymes. Par exemple, « ISO-8859-1 » est aussi appelée « iso8859-1 » et « iso88591 ». Quelques applications ne peuvent pas gérer les différents synonymes correctement (elles nécessitent par exemple l'écriture de « UTF-8 » sous la forme « UTF-8 » et non « utf8 »), donc il est plus sûr de choisir le nom canonique pour une locale particulière. Pour déterminer le nom canonique, lancez la commande suivante, où <nom locale> est l'affichage donné par locale -a pour votre locale préférée (« fr_FR.iso88591 » dans notre exemple).

LC_ALL=<nom_de_la_locale> locale charmap

Pour la locale « fr_FR.iso88591 », la commande ci-dessus affichera :

ISO-8859-1

Ceci résulte en un paramétrage final de locale avec « fr_FR.ISO-8859-1 ». Il est important que la locale trouvée utilisant l'heuristique ci-dessus soit testée avant d'être ajoutée aux fichiers de démarrage de Bash :

LC_ALL=<nom_de_la_locale> locale language
LC_ALL=<nom_de_la_locale> locale charmap
LC_ALL=<nom_de_la_locale> locale int_curr_symbol
LC_ALL=<nom_de_la_locale> locale int_prefix

Les commandes ci-dessus devraient afficher le nom de la langue, le codage des caractères utilisé par le paramètre régional, la monnaie et le préfixe du pays à composer avant de saisir un numéro de téléphone. Si une des commandes ci-dessus échoue avec un message similaire à un de ceux montrés ci-dessous, cela signifie que votre paramètre linguistique n'a pas été installé au chapitre Section 8.8, « Glibc-2.32 » ou qu'il n'est pas pris en charge par l'installation par défaut de Glibc.

locale: Cannot set LC_* to default locale: No such file or directory

Si cela arrive, vous pouvez soit installer la locale désirée en utilisant la commande localedef soit considérer l'utilisation d'une locale différente. Les instructions suivantes supposent qu'il n'y a pas eu de tels messages de Glibc.

D'autres paquets peuvent aussi mal fonctionner (mais pourraient ne pas nécessairement afficher de messages d'erreurs) si le nom de la locale ne correspond pas à leur attente. Dans de tels cas, vous pouvez obtenir des informations utiles en cherchant comment les autres distributions Linux prennent en charge votre locale.

Une fois que les bons paramètres de locale ont été déterminés, créez le fichier /etc/profile :

cat > /etc/profile << "EOF"
# Début de /etc/profile

export LANG=<ll>_<CC>.<charmap><@modifiers>

# Fin de /etc/profile
EOF

Les paramètres régionaux « C » (par défaut) et « en_US.utf8 » (celle recommandée pour les utilisateurs de langue anglaise vivant aux États-Unis) sont différentes. « C » utilise le codage US-ASCII 7-bit et traite les octets utilisant le bit de poids le plus fort comme des caractères invalides. C'est pourquoi, par exemple, la commande ls les remplace par des points d'interrogation sous ce paramètre. De même, essayer d'envoyer un courriel avec de tels caractères depuis Mutt ou Pine envoi des messages non compatibles avec la RFC (le codage du mail sortant est indiqué comme « 8-bit inconnu »). Donc, vous ne pouvez utiliser le paramètre « C » que si vous êtes sûr de ne jamais avoir besoin de caractères 8-bit.

Les locales basées sur UTF-8 ne sont pas bien prises en charge par certains programmes. Le travail progresse pour documenter et, si possible, réparer de tels problèmes, voir http://fr.linuxfromscratch.org/blfs/../view/blfs-10.0/introduction/locale-issues.html.