J'ai utilisé un certain nombre de systèmes basés sur * nix différents au cours des années, et il semble que chaque saveur de Bash que j'utilise ait un algorithme différent pour décider des scripts de démarrage à exécuter. Pour les tâches telles que la configuration des variables d'environnement et des alias et l'impression des messages de démarrage (par exemple, les MOTD), quel script de démarrage est l'endroit approprié pour effectuer ces tâches?
Quelle est la différence entre mettre les choses en .bashrc
, .bash_profile
et .environment
? J'ai aussi vu d' autres fichiers tels que .login
, .bash_login
et .profile
; sont-ils jamais pertinents? Quelles sont les différences entre celles qui sont exécutées lors de la connexion physique, de la connexion à distance via ssh et de l'ouverture d'une nouvelle fenêtre de terminal? Existe-t-il des différences significatives entre les plates-formes (y compris Mac OS X (et son Terminal.app) et Cygwin Bash)?
la source
/etc/bashrc
pour compléter la réponse?Classiquement,
~/.profile
est utilisé par Bourne Shell et est probablement pris en charge par Bash en tant que mesure héritée. Encore une fois,~/.login
et~/.cshrc
ont été utilisés par C Shell - je ne suis pas sûr que Bash les utilise du tout.Le
~/.bash_profile
serait utilisé une fois, lors de la connexion. Le~/.bashrc
script est lu à chaque fois qu'un shell est lancé. C'est analogue à/.cshrc
pour C Shell.Une conséquence est que les éléments
~/.bashrc
doivent être aussi légers (minimaux) que possible pour réduire la surcharge lors du démarrage d'un shell sans connexion.Je crois que le
~/.environment
fichier est un fichier de compatibilité pour Korn Shell.la source
J'ai trouvé des informations sur .bashrc et .bash_profile ici pour résumer:
Il y a aussi un suivi complet sur chacun des fichiers de configuration ici
Celles-ci sont probablement même dépendantes de la distribution, toutes les distributions ne choisissent pas d'avoir chaque configuration avec elles et certaines en ont encore plus. Mais lorsqu'ils portent le même nom, ils incluent généralement le même contenu.
la source
Selon Josh Staiger , Terminal.app de Mac OS X exécute en fait un shell de connexion plutôt qu'un shell sans connexion par défaut pour chaque nouvelle fenêtre de terminal, appelant .bash_profile au lieu de .bashrc.
Il recommande:
la source
Un bon endroit à regarder est la page de manuel de bash. Voici une version en ligne. Recherchez la section "INVOCATION".
la source
J'ai utilisé des distributions de la famille Debian qui semblent s'exécuter
.profile
, mais pas.bash_profile
, alors que les dérivés RHEL s'exécutent.bash_profile
auparavant.profile
.Cela semble être un désordre lorsque vous devez configurer des variables d'environnement pour fonctionner dans n'importe quel système d'exploitation Linux.
la source