Це здається, що середовище, необхідне для пошуку системи встановлених рубінових компонентів, вказане у файлі, який читається лише для оболонок входу. Сторінка керівництва 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.
Отже , якщо змінні рубінове середовище в /home/rails/.profile
або /etc/profile
, наприклад, вони будуть додані до середовища оболонки
- шляхом явного виклику оболонки для входу за допомогою
su -l rails
або su --login rails
або скороченняsu - rails
- коли користувач
rails
входить у систему через SSH
- запустивши передплату, як
bash --login
після входу
Якщо ви хочете, щоб середовище рубіну було встановлено незалежно від того, як ви переходите на користувача rails
, ви можете перемістити відповідні визначення змінних на користувача ~/.bashrc
.
su
? Чи щось подібнеsu -l
чиsu --
?). Що таке оболонка для входу для "рейок" користувача? Ви змінили змінну PATH користувача, і якщо так, то в якому файлі (~/.profile
або~/.bashrc
або~/.bash_profile
або ...?)