Saya memiliki pengguna, katakan user1
, yang memiliki modifikasi pada .bash_profile
, salah satunya mengubah PATH
, misalnya:export PATH=/some/place:$PATH
. Perubahan ini berfungsi dengan baik jika saya masuk sebagai user1
atau lakukan su - user1
.
Tetapi jika saya mencoba menjalankan perintah melalui su
sebagai root
, misalnya:
su -c test.sh oracle
(tes berisi echo $PATH
)
Tampaknya tidak memiliki PATH
yang dimodifikasi (atau PATH
root's , untuk hal tersebut). Saya juga mencoba menyalin .bash_profile
ke .profile
, tidak berhasil.
Mengapa ini terjadi?
Jawaban yang Diterima:
Menggunakan su
tanpa -l
atau -
memulai bash
sebagai shell interaktif, tetapi non-login, yang tidak membaca dari salah satu file yang Anda tentukan. Gunakan -l
atau -
atau masukkan konfigurasi yang relevan ke /root/.bashrc
.
Ringkasan cepat file konfigurasi:
- Login shell (
-l
/--login
) membaca/etc/profile
pertama, dan kemudian yang pertama ditemukan:~/.bash_profile
,~/.bash_login
, dan~/.profile
. - Cangkang interaktif tapi non-login (
-i
) membaca/etc/bash.bashrc
dan~/.bashrc
, dalam urutan itu (kecuali--rcfile
opsi digunakan dan memintanya untuk mencari di tempat lain). - Cangkang non-interaktif, mis. dimulai dari dalam program lain tanpa menggunakan
-l
atau-i
flag, membaca file yang ditentukan dalamBASH_ENV
variabel lingkungan. - Saat dijalankan sebagai
sh
sebagai shell login, ia akan membaca/etc/profile
dan~/.profile
, dalam urutan itu. - Saat dijalankan sebagai
sh
sebagai non-login interaktif, ia membaca file yang ditentukan dalamENV
.