Kedengarannya seperti lingkungan yang diperlukan sistem untuk menemukan komponen ruby yang diinstal ditentukan dalam file yang hanya bisa dibaca untuk shell login. Halaman manual bash mengatakan ini tentang perbedaan antara shell login dan shell non-login:
INVOCATION
A login shell is one whose first character of argument zero is a -, or
one started with the --login option.
dan
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.
sedangkan
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.
Karenanya jika variabel lingkungan ruby ada di dalam /home/rails/.profileatau /etc/profilemisalnya, mereka akan ditambahkan ke lingkungan shell
- dengan secara eksplisit memanggil shell login menggunakan
su -l railsatau su --login railsatau stenosu - rails
- saat pengguna
railsmasuk melalui SSH
- dengan memulai subkulit
bash --loginsetelah masuk
Jika Anda ingin lingkungan ruby ditetapkan terlepas dari bagaimana Anda beralih ke pengguna rails, Anda bisa memindahkan definisi variabel yang relevan ke pengguna ~/.bashrc.
su? Atau sesuatu sepertisu -latausu --?). Apa shell login untuk "rails" pengguna? Apakah Anda memodifikasi variabel PATH pengguna dan jika demikian dalam file mana (~/.profileatau~/.bashrcatau~/.bash_profileatau ...?)