2015-04-14 16 views
7

Sono having problems con uno script di provisioning della shell utilizzato da Vagrant, poiché non è in esecuzione source /home/vagrant/.bashrc. Ho ridotto il problema fino a questo ...Perché `source/home/vagrant/.bashrc` non funziona in uno script di provisioning shell Vagrant?

All'interno del mio VM Ho un file in /home/vagrant/testfile che contiene questo:

echo "In testfile" 

E alla fine del /home/vagrant/.bashrc ho questo:

echo "In .bashrc" 

Entrambi i file sono di proprietà dell'utente vagrant.

In uno dei miei script di shell provisioning Vagrant ho questo:

echo "Hello" 
source /home/vagrant/testfile 
source /home/vagrant/.bashrc 
echo "Goodbye" 

esecuzione vagrant provision dà questo:

Hello 
In testfile 
Goodbye 

Quando faccio vagrant ssh poi /home/vagrant/.bashrc viene eseguito come al solito, e vedo automaticamente :

In .bashrc 

Quindi perché fare source /home/vagrant/.bashrc non ha effetto dal mio script di provisioning?

+0

Cosa fa il * resto * del tuo '.bashrc'? Scommetto che c'è un test per una sessione interattiva nella parte superiore (un controllo su 'PS1' o un controllo sul valore di' $ -' o simile). –

+0

Ugh, sì, hai ragione, Etan, grazie. Non pensavo di guardare il resto della sceneggiatura. –

risposta

8

È necessario rimuovere il bit di "uscita se non si esegue in modo interattivo" (ad esempio [ -z "$PS1" ] && return) dalla parte superiore del proprio .bashrc.

+0

Grazie! In realtà, guardare a cos'altro c'era in ".bashrc" era l'unico modo per ridurre questo problema che non pensavo di fare. Sì, c'era un po 'in cima al file, non messo lì da me, che impediva di fare qualcosa quando si correva così. –

+0

Do * not * rimuoverlo. È importante per tutti i tipi di cose che normalmente si trovano in quel file. Tutto ciò che deve essere eseguito anche quando non è vero probabilmente non dovrebbe essere in quel file (o se dovrebbero essere sopra quel bit). –

+1

Oh, non ho intenzione di rimuoverlo, ma grazie per l'avvertimento. Ora so perché questo sta accadendo, posso trovare altri modi per aggirare il mio problema originale. E 'stato davvero fastidioso per me che qualcosa stava silenziosamente fallendo e non avevo idea del perché! Adesso lo so. –

Problemi correlati