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 user1
atau melakukan a su - user1
.
Tetapi jika saya mencoba menjalankan perintah via su
as 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_profile
ke .profile
, tetapi tidak berhasil.
Mengapa ini terjadi?
rhel
environment-variables
su
NullUser
sumber
sumber
su
Jawaban:
Menggunakan
su
tanpa-l
atau-
mulaibash
sebagai shell interaktif, tetapi non-login, yang tidak membaca dari salah satu file yang Anda tentukan. Gunakan-l
atau-
pilihan atau menempatkan konfigurasi yang relevan ke dalam/root/.bashrc
.Ringkasan cepat file konfigurasi:
-l
/--login
) membaca/etc/profile
pertama, dan kemudian pertama yang ditemukan dari:~/.bash_profile
,~/.bash_login
, dan~/.profile
.-i
) berbunyi/etc/bash.bashrc
dan~/.bashrc
, dalam urutan itu (kecuali jika--rcfile
opsi digunakan dan memberitahukannya untuk mencari di tempat lain).-l
atau-i
, membaca file yang ditentukan dalamBASH_ENV
variabel lingkungan.sh
shell login, ia akan membaca/etc/profile
dan~/.profile
, dalam urutan itu.sh
non-login interaktif, ia membaca file yang ditentukan dalamENV
.sumber
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_profile
jika itu adalah shell login. Jika Anda memasukkanPATH
kode -changing.bashrc
sebagai gantinya, itu akan dijalankan untuk semua shell bash interaktif, bukan hanya shell login.sumber
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_profile
kecuali saya melakukan ini.sumber