Похоже, среда, необходимая для системы, чтобы найти установленные компоненты ruby, указана в файле, который читается только для оболочек входа в систему. На странице справочной системы bash есть информация о разнице между оболочками для входа и не для входа:
INVOCATION
A login shell is one whose first character of argument zero is a -, or
one started with the --login option.
и
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.
в то время как
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.
Следовательно, если переменные среды ruby находятся в /home/rails/.profile
или, /etc/profile
например, они будут добавлены в среду оболочки
- явно вызывая оболочку входа в систему, используя
su -l rails
или su --login rails
или сокращениеsu - rails
- когда пользователь
rails
входит через SSH
- запустив подоболочку как
bash --login
после входа в систему
Если вы хотите, чтобы среда ruby была установлена независимо от того, как вы переключаетесь на пользователя rails
, вы можете ~/.bashrc
вместо этого переместить соответствующие определения переменных в пользователя .
su
? Или что-то вродеsu -l
илиsu --
?). Что такое оболочка входа для пользователя "rails"? Изменяли ли вы переменную PATH пользователя и, если да, то в каком файле (~/.profile
или~/.bashrc
или~/.bash_profile
или ...?)