7.9. Les 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 [invite]$/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.

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écessaire au support des langues natives. Les configurer proprement résulte en ce qui suit :

Ce script configure aussi la variable d'environnement INPUTRC qui fait que Bash et Readline utilisent le fichier /etc/inputrc créé précédemment.

Remplacez [ll] ci-dessous avec le code à deux lettres de la langue désirée (par exemple, « en ») et [CC] avec le code à deux lettres du pays approprié (par exemple, « GB »). [charmap] devra être remplacé avec le charmap canonique de votre locale.

La liste de toutes les locales supportées 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, 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ée par locale -a pour votre locale préférée (« en_GB.iso88591 » dans notre exemple).

LC_ALL=[nom locale] locale charmap

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

ISO-8859-1

Ceci résulte en un paramétrage final de locale avec « en_GB.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=[locale name] locale country
LC_ALL=[locale name] locale language
LC_ALL=[locale name] locale charmap
LC_ALL=[locale name] locale int_curr_symbol
LC_ALL=[locale name] locale int_prefix

Les commandes ci-dessus devraient afficher les noms du pays et de la langue, le codage des caractères utilisé par la locale, la monnaie et le préfixe à composer avant de saisir le numéro de téléphone. Si une des commandes ci-dessus échoue abec un message similaire à un de ceux montrés ci-dessous, cela signifie que votre locale n'a pas été installée dans le chapitre 6 ou qu'elle n'est pas supportée 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.

Certains paquets en dehors de LFS pourraient aussi ne pas avoir de support pour la locale que vous avez choisi. Un exemple est la bibliothèque X (qui fait partie du système X Window), qui affiche le message d'erreur suivant :

Warning: locale not supported by Xlib, locale set to C

Quelque fois, il est possible de corriger ceci en supprimant la partie charmap de la spécification de la locale si cela ne modifie pas le "character map" que Glibc associe avec la locale (ceci peut être vérifié en exécutant la commande locale charmap dans les deux locales). Par exemple, vous pouvez changer "de_DE.ISO-8859-15@euro" en "de_DE@euro" pour obtenir que cette locale soit reconnue par Xlib.

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 comme les autres distributions Linux supportent 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 /etc/profile

export LANG=[ll]_[CC].[charmap]
export INPUTRC=/etc/inputrc

# Fin /etc/profile
EOF
[Note]

Note

Les locales « C » (par défaut) et « en_US » (celle recommandée pour les utilisateurs de langue anglaise vivant aux États-Unis) sont différentes.

Initialiser le plan de codage du clavier, la police de la console et les variables d'environnement relatives à la locale sont les seules étapes d'internationalisation nécessaires pour supporter les locales qui utilisent habituellement les codages à un seul octet et la direction d'écriture de la gauche vers la droite. Les cas plus complexes (incluant les locales basées sur UTF-8) nécessitent des étapes et des correctifs supplémentaires parce qu'un grand nombre d'applications ont tendance à ne pas fonctionner correctement dans de telles conditions. Ces étapes et correctifs ne sont pas inclus dans le livre LFS et de telles locales ne sont pas supportées par LFS.