.bash_profile tidak bersumber saat menjalankan su

41

Saya memiliki pengguna, katakanlah user1, yang memiliki modifikasi yang .bash_profile, salah satunya mengubah PATH, misalnya: export PATH=/some/place:$PATH. Perubahan ini berfungsi dengan baik jika saya masuk sebagai user1atau melakukan a su - user1.

Tetapi jika saya mencoba menjalankan perintah via suas root, misal:

su -c test.sh oracle

(test berisi echo $PATH)

Tampaknya tidak memiliki modifikasi PATH(atau root PATH, dalam hal ini). Saya juga sudah mencoba menyalin .bash_profileke .profile, tetapi tidak berhasil.

Mengapa ini terjadi?

NullUser
sumber
gunakan --login switch kesu
Nikhil Mulley
1
FYI - langganan
Nikhil Mulley

Jawaban:

60

Menggunakan sutanpa -latau -mulai bashsebagai shell interaktif, tetapi non-login, yang tidak membaca dari salah satu file yang Anda tentukan. Gunakan -latau -pilihan atau menempatkan konfigurasi yang relevan ke dalam /root/.bashrc.

Ringkasan cepat file konfigurasi:

  • Login shell ( -l/ --login) membaca /etc/profilepertama, dan kemudian pertama yang ditemukan dari: ~/.bash_profile, ~/.bash_login, dan ~/.profile.
  • Shell interaktif tetapi non-login ( -i) berbunyi /etc/bash.bashrcdan ~/.bashrc, dalam urutan itu (kecuali jika --rcfileopsi digunakan dan memberitahukannya untuk mencari di tempat lain).
  • Kerang non-interaktif, misalnya dimulai dari dalam program lain tanpa menggunakan tanda -latau -i, membaca file yang ditentukan dalam BASH_ENVvariabel lingkungan.
  • Ketika dijalankan sebagai shshell login, ia akan membaca /etc/profiledan ~/.profile, dalam urutan itu.
  • Ketika dijalankan sebagai shnon-login interaktif, ia membaca file yang ditentukan dalam ENV.
Kevin
sumber
5

Bash berperilaku berbeda tergantung pada apakah itu percaya bahwa itu adalah shell login, yaitu shell pertama berjalan ketika Anda masuk ke suatu sistem. Itu hanya membaca .bash_profilejika itu adalah shell login. Jika Anda memasukkan PATHkode -changing .bashrcsebagai gantinya, itu akan dijalankan untuk semua shell bash interaktif, bukan hanya shell login.

Kyle Jones
sumber
0

Jika menggunakan lingkungan Gnome di Scientific Linux 6 (atau mungkin RHEL 6), mulai terminal. Buka tab Edit-> Profile Preferences-> "Title and Command". Pastikan bahwa kotak centang "Jalankan perintah sebagai shell login" dicentang. Saya menemukan bahwa aplikasi terminal Gnome mengabaikan saya .bash_profilekecuali saya melakukan ini.

Andrew
sumber