Cette question a déjà une réponse ici:
J'ai trouvé beaucoup de gens en train de comprendre pourquoi un enseignement semblable à celui-ci:
Put X to your ~/.bashrc and you can do Y
ne fonctionne pas.
Il s'avère toujours que les fichiers de démarrage de bash de Mac OS X (ou Mac's Bash lui-même) ne génèrent pas le fichier ~ / .bashrc, ni dans le shell de connexion, ni dans un shell généré à partir du système de fenêtre, comme dans l'application Terminal de Mac OS X).
Pourquoi cela, alors que tous les autres systèmes Unash avec Bash avec lesquels j'ai déjà travaillé l'ont déjà fait?
PS:
J'ai trouvé ce que Bash lui-même dit à propos des fichiers de démarrage (ce qui pourrait être utile):
Lorsque Bash est appelé en tant que shell de connexion interactif ou en tant que shell non interactif avec l'option --login, il lit et exécute d'abord les commandes du fichier / etc / profile, si ce fichier existe. Après avoir lu ce fichier, il recherche ~ / .bash_profile, ~ / .bash_login et ~ / .profile, dans cet ordre, puis lit et exécute les commandes à partir de la première qui existe et est lisible. L'option --noprofile peut être utilisée au démarrage du shell pour empêcher ce comportement.
Source: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files
la source
~/.bash_profile
c'est exécuté mais pas~/.bashrc
. Wierd.Réponses:
Sous OSX, le terminal démarre par défaut une session de connexion, il lit donc .bash_profile, etc. (Le processus de connexion à l’interface graphique qui vous demande votre nom et votre mot de passe n’utilise pas de scripts shell et ne démarre aucun shell, tout se fait à partir de launchd et de l’espace de travail)
Sur d'autres Unices, xterm exécute un shell autre que de connexion par défaut. Ainsi, ils lisent .bashrc car les scripts qui vous présentent votre mot de passe, etc. lors de la connexion, appellent la session de connexion. Tous les terminaux en subissent le processus et héritent de l'environnement shell.
À partir du document GNU auquel vous avez fait référence
la source
bash
lit seulement.bashrc
pour les shells non-login :Comme Terminal démarre en
bash
tant que shell de connexion (exécutéw
pour vérifier que lesbash
instances sont exécutées en tant que-bash
), il.bashrc
n'est jamais lu automatiquement.la source