Edytowane w celu odzwierciedlenia problemu, który naprawdę chciałem rozwiązać:
Muszę skonfigurować moje środowisko rubinowe, aby móc wdrożyć za pośrednictwem Capistrano.
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"
Umieszczam je w ~ deploy / .profile, ale kiedy ssh do mnie, nie są uruchamiane. Pomysły?
Używam Ubuntu 12.04.
Pierwotne pytanie brzmiało:
Kiedy ssh na inne konto na localhost, nie ładuje mojego .profile. Jak zmusić ssh do załadowania? Używam Ubuntu 12.04.
.profile
jest ładowany tylko dla powłok logowania, którymi nie jest sesja ssh (domyślnie). Jeśli chcesz, aby coś uruchomiło się przy starcie dla wszystkich interaktywnych powłok, włóż to.bashrc
zamiast tego (.zshrc
lub cokolwiek, czego używa twoja powłoka).Ponadto, jeśli chcesz po prostu zalogować się na inne konto na komputerze lokalnym, ssh prawdopodobnie przesadza. Możesz
su
zamiast tego użyć lub czegoś.źródło
.bashrc
to, że nie jest również załadowany.Używanie bash powinno skutkować czytaniem
~/.bashrc
. Następujące mogą pomóc w ksh i sh (bash w trybie sh) lub gdy twój~/.bashrc
nie jest wykonywany podczas logowania.Sshd
~/.ssh/environment
sprawdza (uprawnienia sshd_config (5)) i~/.ssh/sshrc
lub~/.ssh/rc
. Daje to możliwość konfiguracjiENV=~/.profile
lubBASH_ENV=~/.profile
iSSH_LOGIN=Y
W
~/.profile
mam układ następujące (WymieńENV
zBASH_ENV
przy użyciu bash):źródło
Bash czyta
~/.profile
tylko wtedy, gdy jest to powłoka logowania i~/.bash.bashrc
tylko wtedy, gdy ma terminal, z których żaden nie jest domyślnie prawdziwy przy wywoływaniu polecenia za pomocą ssh. Istnieje jednak kilka innych opcji ustawiania środowiska na serwerze, wszystkie niestety w zależności od konfiguracji systemu:~/.zshenv
nawet w tym przypadku; nie ma jednak odpowiedniego pliku konfiguracyjnego dla bash.PermitUserEnvironment
opcja jest włączona/etc/sshd_config
, ssh przeczyta~/.ssh/environment
. Niestety ta opcja jest domyślnie wyłączona.pam_env.so
zostanie wywołane zuser_readenv=1
in/etc/pam.d/sshd
, będzie czytać~/.pam_environment
. Chociaż nie jest to domyślny moduł, jest tak nazywany przynajmniej w Ubuntu .command=
dyrektywę w pliku autoryzowanych kluczy, wywołując skrypt opakowania, który ustawia środowisko i wykonuje$SSH_ORIGINAL_COMMAND
na końcu (ja to polecenie dotyczy powłoki, więc eval jest tutaj właściwe, ale nie jestem pewien) .źródło
Prawdopodobnie masz
~/.bash_profile
, który zastępuje~/.profile
.źródło