.bash_profile không có nguồn gốc khi chạy su


41

Tôi có một người dùng, giả sử user1, có sửa đổi cho nó .bash_profile, một trong số họ thay đổi PATH, ví dụ : export PATH=/some/place:$PATH. Thay đổi này hoạt động tốt nếu tôi đăng nhập như user1hoặc làm a su - user1.

Nhưng nếu tôi cố gắng chạy một lệnh qua sunhư root, ví dụ như:

su -c test.sh oracle

(kiểm tra có chứa echo $PATH)

Nó dường như không có sửa đổi PATH(hoặc root PATH, cho vấn đề đó). Tôi cũng đã thử sao chép .bash_profilevào .profile, nhưng không có kết quả.

Tại sao chuyện này đang xảy ra?


sử dụng --login chuyển sangsu
Nikhil Mulley

1
FYI - ghi lại tốt đẹp trên các tập tin cấu hình bash hacktux.com/bash/bashrc/bash_profile
Nikhil Mulley

Câu trả lời:


60

Sử dụng sumà không có -lhoặc -bắt đầu bashnhư một vỏ tương tác, nhưng không đăng nhập, không đọc được từ một trong các tệp bạn đã chỉ định. Sử dụng -lhoặc -tùy chọn hoặc đặt cấu hình có liên quan vào /root/.bashrc.

Tóm tắt nhanh các tập tin cấu hình:

  • Đăng nhập shell ( -l/ --login) lần đọc /etc/profileđầu tiên, và sau đó là người đầu tiên mà nó tìm thấy trong: ~/.bash_profile, ~/.bash_login, và ~/.profile.
  • Shell tương tác nhưng không đăng nhập ( -i) đọc /etc/bash.bashrc~/.bashrc, theo thứ tự đó (trừ khi --rcfiletùy chọn được sử dụng và bảo nó tìm ở nơi khác).
  • Các shell không tương tác, ví dụ bắt đầu từ bên trong một chương trình khác mà không sử dụng các cờ -lhoặc -i, đọc tệp được chỉ định trong BASH_ENVbiến môi trường.
  • Khi chạy như shmột vỏ đăng nhập, nó sẽ đọc /etc/profile~/.profile, theo thứ tự đó.
  • Khi chạy dưới shdạng không đăng nhập tương tác, nó sẽ đọc tệp được chỉ định trong ENV.

5

Bash hành xử khác nhau tùy thuộc vào việc nó tin rằng đó là shell đăng nhập, tức là shell đầu tiên chạy khi bạn đăng nhập vào hệ thống. Nó chỉ đọc .bash_profilenếu nó là một vỏ đăng nhập. Nếu bạn đặt PATHmã -changing thay vào .bashrcđó, nó sẽ được chạy cho tất cả các bash shell tương tác, không chỉ các shell đăng nhập.


0

Nếu sử dụng môi trường Gnome trong Khoa học Linux 6 (hoặc có lẽ là RHEL 6), hãy khởi động một thiết bị đầu cuối. Chuyển đến Edit-> Profile Preferences-> "Title and Command"tab. Đảm bảo rằng hộp kiểm "Chạy lệnh dưới dạng vỏ đăng nhập" được chọn. Tôi thấy rằng ứng dụng đầu cuối Gnome đang bỏ qua tôi .bash_profiletrừ khi tôi làm điều này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.