web-dev-qa-db-fra.com

Comment faire OS X pour lire le fichier .bash_profile pas .profile

J'ai lu tellement de suggestions à propos de ne pas placer vos commandes de personnalisation dans le fichier ".profile". Créez plutôt un .bash_profile pour vous-même et ajoutez votre alias, etc.

Mais, lorsque j'ouvre le nouveau terminal, s'il n'y a que .bash_profile, OS X n'exporte/ne source pas les commandes qui y sont mentionnées. Je dois rechercher manuellement le .bash_profile.

Si je crée un fichier .profile, à l'ouverture d'un nouveau terminal, toutes mes commandes en .profile sont exécutées et seront facilement disponibles.

Pourriez-vous s'il vous plaît m'aider à comprendre comment cela fonctionne? Aussi, quand utiliser les fichiers .bashrc/.profile/.bash_profile.

Merci!

36
cherryhitech

Selon la page de manuel fournie avec OS X:

... il recherche ~/.bash_profile, ~/.bash_login, et ~/.profile, dans cet ordre, et lit et exécute les commandes du premier qui existe et est lisible. L'option --noprofile peut être utilisée lorsque le shell est démarré pour empêcher ce comportement.

Il ne doit lire ~/.profile Qu'en dernier recours si ni ~/.bash_profile Ni ~/.bash_login Ne sont lisibles.

Sur tous mes systèmes OS X, mon ~/.bash_profile Est réglé sur:

if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

Il est fortement recommandé de le faire sur OS X afin que bash puisse lire votre fichier ~/.bashrc Comme vous vous y attendez.

73
Andon M. Coleman

Il est également possible que votre shell de terminal utilise par défaut sh au lieu de bash. Vous pouvez d'abord vérifier cela:

$ echo $Shell
/bin/tcsh

Pour changer cela en bash, vous pouvez aller dans votre Terminal -> Préférences -> onglet Démarrage, et changer "Shell ouvre avec:" de "Shell de connexion par défaut" en Commande et valeur "/ bin/bash".

Vous pouvez également modifier votre shell par défaut en exécutant la commande suivante à l'invite de commandes:

chsh -s bin/bash

Après avoir effectué l'une de ces opérations, ouvrez une nouvelle fenêtre Shell, et votre .bash_profile devrait provenir.

26
Matt S

Il convient de mentionner que bash recherchera d'abord un /etc/profile file, comme indiqué dans les pages de manuel de Bash.

Quand bash est invoqué 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, et lit et exécute les commandes du premier qui existe et est lisible. L'option --noprofile peut être utilisée lorsque le shell est démarré pour inhiber ce comportement.

3
Steve Benner