w pliku .profile ustawiłem kilka zmiennych środowiskowych, w przypadku zalogowania się przez ssh zmienne są dostępne, natomiast w przypadku deploya przez capistrano te zmienne nie są dostępne.
zmienne z .profile i .bash_profile są ładowane w interactive shell
zmienne z .bashrc powinny być dostępne w non-interactive shell (czyli w przypadku capistrano), ale ustawione w tym pliku zmienne nie są dostępne w trakcie deploya
W trakcie deploya potrzebuję dostępu do ustawionych zmiennych środowiskowych. Próbowałem wykonać polecenie source
niestety otrzymałem komunikat: source: not found
System operacyjny: FreeBSD
(…)
. file The commands in the specified file are read and executed by the
shell. The return command may be used to return to the . com-
mand’s caller. If file contains any `/’ characters, it is used
as is. Otherwise, the shell searches the PATH for the file. If
it is not found in the PATH, it is sought in the current working
directory.
(…)
2013-08-15 19:56:34 executing `shell’
====================================================================
Welcome to the interactive Capistrano shell! This is an experimental
feature, and is liable to change in future releases. Type ‘help’ for
a summary of how to use the shell.
Z $ ssh [user]@[host] “echo $SHELL” to Ci źle napisałem, ponieważ $SHELL zostanie rozwiązane na /bin/bash przed połączeniem się via ssh. Zamień " na ’ .
/bin/bash - raczej na freebsd nie będziesz mieć basha w tym miejscu. Bash nie jest domyślnie instalowany we freebsd. Po instalacji z paczki lub portów zazwyczaj wyląduje w /usr/local/bin/bash. Wyjątkiem od tej reguły będzie sytuacja, gdy sam dodasz sobie symlink w /bin.
Sprawdź z jakiej powłoki korzysta użytkownik [user]@[host]. Obstawiam, że /bin/sh lub /bin/csh, ponieważ one są domyślne. Jeśli nie używasz basha to nie będzie oczywiście odczytywany przy starcie plik ~/.bashrc tylko np. ~/.shrc lub ~/.cshrc
mam basha zainstalowanego, użytkownik korzysta z basha, specjalnie wybiarłem basha jako domyślną powłokowe dla zwykłego użytkownika, bo sh działa trochę dziwnie jak dla mnie.
Masz rację bash jest w /usr/local/bin/bash ale na bin/bash mam ustawionego symlinka. Po wpisaniu w konsoli cap shell
zmienna shell ustawiona jest na /usr/local/bin/bash
W tym momencie te zmienne mam ustawione w default_environment ale przez to mam duplikację wpisów w pliku plikach do deploya i .profile. Plik .bashrc w ogóle nie jest odczytywany.