2010-02-22 12 views
0

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:ligne ne s'exécute pas dans .bash_profile et .bashrc sur mon Mac OSX Snow Leopard

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 manuellement j'arrive à la bonne version:

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] 

Des idées comment je peux résoudre ce problème?

Merci,

Tam

+0

Vérifiez que bash est bien votre shell de connexion. Si vous avez créé votre compte avant 10.3, la valeur par défaut était tcsh mais elle peut être modifiée à l'aide de chsh. – mark4o

Répondre

1

Si vous avez un ~/.profile essayez d'ajouter la ligne suivante.

if [[-s /Users/tammam56/.rvm/scripts/rvm]]; puis source /Users/tammam56/.rvm/scripts/rvm; fi

1

Avez-vous confirmé que d'autres commandes dans .bashrc et/ou .bash_profile sont mis à jour correctement?

Ensuite, vous devez confirmer si Terminal démarre le shell en tant que shell de connexion ou non (voir Préférences -> Démarrage).

Sur la page man bash:

Lorsque bash est invoqué comme shell interactif de connexion, ou comme une coquille actif non-interaction avec l'option --login, elle lit et exécute com- mands à partir 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 empêcher ce comportement. Lorsqu'un shell interactif qui n'est pas un shell de connexion est démarré, bash lit et exécute les commandes à partir de ~/.bashrc, si ce fichier existe. Ce peut être inhibé en utilisant l'option --norc. L'option de fichier --rcfile forcera bash à lire et à exécuter des commandes à partir du fichier au lieu de ~/.bashrc.

+0

Merci Ether. Vous cherchez sont les préférences> Démarrage: Shells ouvert avec le shell de connexion par défaut (/ usr/bin/login). Que voulez-vous dire par "Avez-vous confirmé que les autres commandes dans .bashrc et/ou .bash_profile sont mises à jour correctement?" – Tam

+0

@Tam: essayez d'écrire 'echo 'en exécutant .bashrc" 'dans votre .bashrc, et' echo "en exécutant .bash_profile" 'dans votre .bash_profile - lequel de ces fichiers est exécuté par un nouveau Terminal? – Ether

+0

Merci Ether. J'ai essayé mais je n'ai pas eu d'affichage! Je suppose que mon bash n'exécute aucun de ces fichiers !! J'ai essayé @UnderpantsGnome suggestion et cela a fonctionné! J'ai également ajouté echo "exécutant .profile" en bas de celui-ci et vu la sortie! – Tam

0

J'ai trouvé que la solution la plus simple à ce problème était de déplacer tout le contenu de mon fichier ~/.bashrc (donc mon ~/.bashrc est maintenant vide) dans 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.