2015-04-14 7 views
7

Jestem having problems ze skryptem obsługi powłoki używanym przez Vagrant, ponieważ nie wykonuje on source /home/vagrant/.bashrc. Mam obniżył się do tego problemu ...Dlaczego `source/home/vagrant/.bashrc` nie działa w skrypcie obsługi powłoki programu Vagrant?

w moim VM Mam plik, który zawiera w /home/vagrant/testfile to:

echo "In testfile" 

I na koniec /home/vagrant/.bashrc mam to:

echo "In .bashrc" 

Oba pliki są własnością użytkownika vagrant.

W jednym z moich Vagrant skryptów provisioning powłoki mam to:

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

Running vagrant provision daje to:

Hello 
In testfile 
Goodbye 

Kiedy zrobić vagrant ssh następnie /home/vagrant/.bashrc prowadzony jest jak zwykle, a ja automatycznie zobaczyć :

In .bashrc 

Dlaczego więc wykonywanie source /home/vagrant/.bashrc nie ma wpływu w ramach skryptu obsługi administracyjnej?

+0

Co robi * reszta * twojego '.bashrc'? Założę się, że jest test na sesję interaktywną u góry (czek na 'PS1' lub sprawdzenie wartości' $ -' lub podobnej). –

+0

Ugh, tak, masz rację, Etan, dzięki. Nie myślałem o spojrzeniu na resztę scenariusza. –

Odpowiedz

8

Musisz usunąć bit "Zakończ, jeśli nie działa interaktywnie" (na przykład [ -z "$PS1" ] && return) od góry .bashrc.

+0

Dziękujemy! Właściwie to, patrząc na to, co jeszcze było w '.bashrc', było jednym z zawężeniem tego problemu, o którym nie myślałem. Tak, było trochę na górze pliku, nie umieszczonego przeze mnie, co uniemożliwiło mu zrobienie czegokolwiek, gdy działał w ten sposób. –

+0

Nie * nie * usuń. Jest to ważne dla wszystkich rzeczy, które zwykle znajdują się w tym pliku. Wszystko, co musi działać, nawet jeśli nie jest prawdą, prawdopodobnie nie powinno znajdować się w tym pliku (lub jeśli powinno być powyżej tego bitu). –

+1

Och, nie zamierzam go usunąć, ale dzięki za ostrzeżenie. Teraz wiem, dlaczego tak się dzieje Mogę znaleźć inne sposoby obejścia mojego pierwotnego problemu. Naprawdę mnie dręczyło, że coś cicho zawodziło i nie miałem pojęcia, dlaczego! Teraz wiem. –