Es klingt so, als ob die Umgebung, die das System benötigt, um die installierten Ruby-Komponenten zu finden, in einer Datei angegeben ist, die nur für Login-Shells gelesen wird. Auf der Bash-Handbuchseite wird Folgendes über den Unterschied zwischen Login-Shells und Nicht-Login-Shells gesagt:
INVOCATION
A login shell is one whose first character of argument zero is a -, or
one started with the --login option.
und
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.
wohingegen
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.
Wenn sich die Ruby-Umgebungsvariablen beispielsweise in /home/rails/.profile
oder befinden /etc/profile
, werden sie der Shell-Umgebung hinzugefügt
- durch explizites Aufrufen einer Login-Shell mit
su -l rails
oder su --login rails
oder der Kurzformsu - rails
- wenn sich der Benutzer
rails
über SSH anmeldet
- durch Starten einer Subshell wie
bash --login
nach dem Login
Wenn Sie möchten, dass die Ruby-Umgebung unabhängig davon festgelegt wird, wie Sie zum Benutzer wechseln rails
, können Sie ~/.bashrc
stattdessen die relevanten Variablendefinitionen in die des Benutzers verschieben .
su
? Oder so ähnlichsu -l
odersu --
?). Was ist die Login-Shell für Benutzer "Rails"? Haben Sie die PATH-Variable des Benutzers geändert und wenn ja, in welcher Datei (~/.profile
oder~/.bashrc
oder~/.bash_profile
oder ...?)