Có vẻ như môi trường cần thiết cho hệ thống để tìm các thành phần ruby đã cài đặt được chỉ định trong một tệp chỉ được đọc cho các vỏ đăng nhập. Trang hướng dẫn bash có điều này để nói về sự khác biệt giữa shell đăng nhập và shell không đăng nhập:
INVOCATION
A login shell is one whose first character of argument zero is a -, or
one started with the --login option.
và
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.
trong khi
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.
Do đó, nếu các biến môi trường ruby nằm trong /home/rails/.profile
hoặc /etc/profile
ví dụ, chúng sẽ được thêm vào môi trường shell
- bằng cách gọi rõ ràng một vỏ đăng nhập bằng cách sử dụng
su -l rails
hoặc tốc su --login rails
kýsu - rails
- khi người dùng
rails
đăng nhập qua SSH
- bằng cách bắt đầu một subshell như
bash --login
sau khi đăng nhập
Nếu bạn muốn môi trường ruby được đặt bất kể bạn chuyển sang người dùng như thế nào rails
, bạn có thể chuyển các định nghĩa biến có liên quan sang người dùng ~/.bashrc
thay thế.
su
? Hoặc một cái gì đó nhưsu -l
hoặcsu --
?). Shell đăng nhập cho "đường ray" của người dùng là gì? Bạn đã sửa đổi biến PATH của người dùng và nếu như vậy, trong đó tập tin (~/.profile
hay~/.bashrc
hay~/.bash_profile
hay ...?)