Wygląda na to, że środowisko niezbędne do znalezienia przez system zainstalowanych składników ruby jest określone w pliku, który jest odczytywany tylko dla powłok logowania. Strona podręcznika bash zawiera informację o różnicy między powłokami logowania i powłokami, które nie są zalogowane:
INVOCATION
A login shell is one whose first character of argument zero is a -, or
one started with the --login option.
i
When bash is invoked as an interactive login shell, or as a non-inter‐
active shell with the --login option, it first reads and executes com‐
mands from the file /etc/profile, if that file exists. After reading
that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,
in that order, and reads and executes commands from the first one that
exists and is readable.
natomiast
When an interactive shell that is not a login shell is started, bash
reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if
these files exist.
Dlatego jeśli ruby zmiennych środowiskowych znajdują się w /home/rails/.profile
lub /etc/profile
na przykład, zostaną dodane do środowiska powłoki
- przez jawne wywoływanie powłoki logowania za pomocą
su -l rails
lub su --login rails
lub stenografiisu - rails
- gdy użytkownik
rails
loguje się przez SSH
- uruchamiając podpowłokę
bash --login
po zalogowaniu
Jeśli chcesz ustawić środowisko Ruby niezależnie od tego, w jaki sposób przełączasz się na użytkownika rails
, możesz ~/.bashrc
zamiast tego przenieść odpowiednie definicje zmiennych do użytkownika .
su
? Lub coś w rodzajusu -l
lubsu --
?). Co to jest powłoka logowania dla „szyn” użytkownika? Czy zmodyfikować zmienną PATH użytkownika, a jeśli tak, w jaki plik (~/.profile
albo~/.bashrc
albo~/.bash_profile
albo ...?)