Ho un utente, diciamo user1
, che ha modifiche al suo .bash_profile
, uno di loro cambia il PATH
, ad esempio:export PATH=/some/place:$PATH
. Questa modifica funziona correttamente se accedo come user1
oppure fai un su - user1
.
Ma se provo a eseguire un comando tramite su
come root
, ad esempio:
su -c test.sh oracle
(il test contiene echo $PATH
)
Non sembra avere il PATH
modificato (o il PATH
di root , per questo motivo). Ho anche provato a copiare .bash_profile
a .profile
, inutilmente.
Perché sta succedendo?
Risposta accettata:
Usando su
senza -l
o -
avvia bash
come shell interattiva, ma senza login, che non legge da nessuno dei file specificati. Usa -l
o -
opzione o inserire la configurazione pertinente in /root/.bashrc
.
Riepilogo rapido dei file di configurazione:
- Shell di accesso (
-l
/--login
) legge/etc/profile
prima, e poi la prima che trova:~/.bash_profile
,~/.bash_login
e~/.profile
. - Shell interattiva ma senza login (
-i
) legge/etc/bash.bashrc
e~/.bashrc
, in quest'ordine (a meno che il--rcfile
viene utilizzata e gli dice di cercare altrove). - Shell non interattivi, ad es. avviato da un altro programma senza utilizzare il
-l
o-i
flags, legge il file specificato nelBASH_ENV
variabile di ambiente. - Quando eseguito come
sh
come shell di accesso, leggerà/etc/profile
e~/.profile
, in quest'ordine. - Quando eseguito come
sh
come non login interattivo, legge il file specificato inENV
.