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/profileprima, e poi la prima che trova:~/.bash_profile,~/.bash_logine~/.profile. - Shell interattiva ma senza login (
-i) legge/etc/bash.bashrce~/.bashrc, in quest'ordine (a meno che il--rcfileviene utilizzata e gli dice di cercare altrove). - Shell non interattivi, ad es. avviato da un altro programma senza utilizzare il
-lo-iflags, legge il file specificato nelBASH_ENVvariabile di ambiente. - Quando eseguito come
shcome shell di accesso, leggerà/etc/profilee~/.profile, in quest'ordine. - Quando eseguito come
shcome non login interattivo, legge il file specificato inENV.