Sembra che l'ambiente necessario al sistema per trovare i componenti ruby installati sia specificato in un file che viene letto solo per le shell di login. La pagina di manuale di bash ha questo da dire sulla differenza tra shell di login e shell non di login:
INVOCATION
A login shell is one whose first character of argument zero is a -, or
one started with the --login option.
e
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.
mentre
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.
Pertanto, se le variabili di ambiente ruby sono presenti /home/rails/.profile
o, /etc/profile
ad esempio, verranno aggiunte all'ambiente shell
- invocando esplicitamente una shell di accesso utilizzando
su -l rails
o su --login rails
o la scorciatoiasu - rails
- quando l'utente
rails
accede tramite SSH
- avviando una subshell come
bash --login
dopo il login
Se si desidera impostare l'ambiente ruby indipendentemente da come si passa all'utente rails
, è possibile invece spostare le definizioni delle variabili rilevanti nell'utente ~/.bashrc
.
su
? O qualcosa di similesu -l
osu --
?). Qual è la shell di accesso per "rotaie" utente? Hai modificato la variabile PATH dell'utente e, in tal caso, in quale file (~/.profile
o~/.bashrc
o~/.bash_profile
o ...?)