Il semble que l'environnement nécessaire au système pour trouver les composants ruby installés est spécifié dans un fichier qui n'est lu que pour les shells de connexion. La page de manuel bash a ceci à dire sur la différence entre les shells de connexion et les shells sans connexion:
INVOCATION
A login shell is one whose first character of argument zero is a -, or
one started with the --login option.
et
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.
tandis que
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.
Par conséquent, si les variables d'environnement ruby sont dans /home/rails/.profileou /etc/profilepar exemple, elles seront ajoutées à l'environnement shell
- en invoquant explicitement un shell de connexion en utilisant
su -l railsou su --login railsou le raccourcisu - rails
- lorsque l'utilisateur se
railsconnecte via SSH
- en lançant un sous-shell comme
bash --loginaprès la connexion
Si vous souhaitez que l'environnement ruby soit défini quelle que soit la façon dont vous basculez vers l'utilisateur rails, vous pouvez déplacer les définitions de variable pertinentes vers l'utilisateur à la ~/.bashrcplace.
su? Ou quelque chose commesu -lousu --?). Qu'est-ce que le shell de connexion pour les "rails" utilisateur? Avez-vous modifié la variable PATH de l'utilisateur et si oui, dans quel fichier (~/.profileou~/.bashrcou~/.bash_profileou ...?)