ligne n'exécute pas dans .bash_profile et .bashrc sur mon Mac OS X Snow Leopard
-
22-09-2019 - |
Question
Je viens d'installer Ruby Version Manager (RVM), qui fonctionne très bien, mais il m'a demandé de mettre la ligne suivante dans mon /.bash_profile et ~ / .bashrc fichiers:
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
regardant le contenu que je vois ce qui suit:
tammam56$ cat /.bash_profile
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
tammam56$ cat ~/.bashrc
export PATH=/usr/local/bin:$PATH
export MANPATH=/usr/local/man:$MANPATH
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
Cependant, quand je commence une nouvelle fenêtre Terminal il n'exécute pas la commande que je sais ce que je mets mon défaut Ruby verion à 1.9 et si j'exécute la ligne que je reçois manuellement la version correcte:
tammam56$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
Macintosh-37:~ tammam56$ if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
Macintosh-37:~ tammam56$ ruby -v
ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]
Toutes les idées comment je peux résoudre ce problème?
Merci,
Tam
La solution
Si vous avez un ~ / .profile essayez d'ajouter la ligne suivante à elle.
si [[-s /Users/tammam56/.rvm/scripts/rvm]]; puis la source /Users/tammam56/.rvm/scripts/rvm; fi
Autres conseils
Avez-vous confirmé que d'autres commandes dans .bashrc et / ou .bash_profile sont mis à jour correctement?
Ensuite, vous devez confirmer si Terminal commence la coquille comme une coquille de connexion ou non (voir sous Préférences -> Démarrage).
A partir de la page man bash:
Lorsque bash est invoqué comme une coquille de connexion interactive, ou en tant que non-inter- shell actif avec l'option --login, elle lit et exécute com- mandes 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 à partir de la première que existe et est lisible. L'option --noprofile peut être utilisée lorsque le coquille commence à inhiber ce comportement.
Quand un shell interactif qui n'est pas un shell de connexion est démarré, bash lit et exécute les commandes de ~ / .bashrc, si ce fichier existe. Cette peut être inhibée en utilisant l'option --norc. L'option de fichier --rcfile forcera bash à lire et à exécuter des commandes de fichier au lieu de ~ / .Bashrc.
J'ai trouvé que la meilleure solution à ce problème était de déplacer tout le contenu de mon fichier ~ / .bashrc (donc mon ~ / .bashrc est maintenant vide) à un nouveau fichier ~ / .bash_profile. Maintenant, tous les onglets Terminal.app exécutent automatiquement toutes les lignes incluses dans ~ / .bash_profile. Cela vaut également pour iTerm.