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/.profile
ou /etc/profile
par exemple, elles seront ajoutées à l'environnement shell
- en invoquant explicitement un shell de connexion en utilisant
su -l rails
ou su --login rails
ou le raccourcisu - rails
- lorsque l'utilisateur se
rails
connecte via SSH
- en lançant un sous-shell comme
bash --login
aprè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 ~/.bashrc
place.
su
? Ou quelque chose commesu -l
ousu --
?). 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 (~/.profile
ou~/.bashrc
ou~/.bash_profile
ou ...?)