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/.profile
atau /etc/profile
misalnya, mereka akan ditambahkan ke lingkungan shell
- dengan secara eksplisit memanggil shell login menggunakan
su -l rails
atau su --login rails
atau stenosu - rails
- saat pengguna
rails
masuk melalui SSH
- dengan memulai subkulit
bash --login
setelah 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 -l
atausu --
?). Apa shell login untuk "rails" pengguna? Apakah Anda memodifikasi variabel PATH pengguna dan jika demikian dalam file mana (~/.profile
atau~/.bashrc
atau~/.bash_profile
atau ...?)