la linea non viene eseguito in .bash_profile e .bashrc sul mio Mac OSX Snow Leopard
-
22-09-2019 - |
Domanda
Ho appena installato di Ruby Version Manager (RVM) che sta lavorando bene, ma mi ha chiesto di mettere la seguente riga nel mio /.bash_profile e ~ / .bashrc file:
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
guardando il contenuto vedo il seguente:
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
Tuttavia quando inizio una nuova finestra Terminale non esegue il comando So che questo, come ho impostato il mio difetto verion Ruby per 1,9 e se eseguo la linea manualmente ottengo alla versione corretta:
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]
Tutte le idee come posso risolvere questo?
Grazie,
Tam
Soluzione
Se si dispone di un ~ / .profile provare ad aggiungere la seguente riga ad esso.
if [[-s /Users/tammam56/.rvm/scripts/rvm]]; quindi fonte /Users/tammam56/.rvm/scripts/rvm; fi
Altri suggerimenti
Avete confermato che gli altri comandi in .bashrc e / o .bash_profile vengono aggiornati correttamente?
Si dovrebbe confermare se Terminal sta iniziando la shell come shell di login o meno (vedi in Preferenze -> Avvio).
Dalla pagina man di bash:
Quando bash è invocata come una shell di login interattiva, o come un non-inter shell attivo con opzione --login, esso prima legge ed esegue com- mands dal file / etc / profile, se quel file esiste. Dopo aver letto quel file, cerca ~ / .bash_profile, ~ / .bash_login, e ~ / .profile, in questo ordine, e legge ed esegue comandi dal primo che esiste ed è leggibile. L'opzione --noprofile può essere utilizzato quando il shell viene avviata per inibire questo comportamento.
Quando si avvia una shell interattiva che non è una shell di login, bash legge ed esegue comandi da ~ / .bashrc, se tale file esiste. Questo può essere inibita utilizzando l'opzione --norc. L'opzione di file --rcfile costringerà bash per leggere ed eseguire comandi da file invece di ~ / .Bashrc.
Ho trovato che la soluzione più semplice a questo problema è stato quello di spostare tutti i contenuti dal file ~ / .bashrc (quindi il mio ~ / .bashrc è ora vuoto) in un nuovo file ~ / .bash_profile. Ora tutte le schede Terminal.app eseguire automaticamente tutte le linee inclusi in ~ / .bash_profile. Questo vale anche per iTerm.