On Saturday 11 November 2006 09:35, Habib Bouaziz-Viallet wrote:
> Quel fichier de démarrage est lu par bash ? .bashrc, bash_profile ? Sur
> ma machine, il semblerait que .bash_profile ne soit pas lu. Il faut que
> je fasse . ./bash_profile
Tout est expliqué dans la page de manuel de bash, à la
section 'INVOCATION'. En gros, les fichiers lus au démarrage dependent de
la façon dont le shell est appelé (interactif, login...).
INVOCATION
Un shell est dit de connexion (Ndt : login shell) si le premier
caractère de son argument numéro zéro est un -, ou s'il est
invoqué avec l'option -login.
Un shell est interactif si son entrée standard et sa sortie
d'erreur sont toutes deux connectées à un terminal (déterminé
par la fonction isatty(3)), ou s'il est invoqué avec l'option
-i. Le paramètre PS1 est positionné, et le paramètre $- con-
tient la lettre i si bash est interactif, ce qui permet à un
script ou à un fichier de démarrage de vérifier l'état du
shell.
Le paragraphe suivant décrit comment bash exécute ses fichiers
d'initialisation. Si l'un de ces fichiers existe mais n'est
pas accessible en lecture, bash signale une erreur. Les tildes
sont remplacées par des noms de fichiers comme décrit dans le
paragraphe Développement du Tilde de la section Développement.
Lorsque bash est lancé comme shell de connexion interactif, ou
comme shell non-interactif avec l'option --login, il lit et
exécute tout d'abord les commandes se trouvant dans le fichier
/etc/profile s'il existe. Après lecture de ce fichier, il
recherche ~/.bash_profile, ~/.bash_login, et ~/.profile, dans
cet ordre, et exécute les commandes se trouvant dans le premier
fichier existant et accessible en lecture. L'option --nopro-
file peut être utilisée au démarrage du shell pour empêcher ce
comportement.
Lorsqu'un shell de connexion se termine, bash lit et exécute
les commandes du fichier ~/.bash_logout, s'il existe.
Quand un shell interactif démarre sans être un shell de connex-
ion, bash lit et exécute les commandes se trouvant dans
~/.bashrc s'il existe. Ce comportement peut être inhibé à
l'aide de l'option --norc. L'option --rcfile fichier forcera
bash à exécuter les commandes dans fichier plutôt que dans
~/.bashrc.
Quand bash est démarré de manière non-interactive, pour lancer
un script shell par exemple, il recherche la variable BASH_ENV
dans l'environnement, développe son contenu si elle existe, et
considère cette valeur comme le nom d'un fichier à lire et
exécuter. Bash se comporte comme si la commande suivante se
trouvait en début de script :
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
mais la valeur de la variable PATH n'est pas utilisée pour
rechercher le fichier.
--
Frédéric
http://www.gbiloba.org