GNU/Linux >> Linux Esercitazione >  >> Linux

.bash_profile non originato durante l'esecuzione di Su?

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 nel BASH_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 in ENV .

Linux
  1. Suggerisci l'installazione di pacchetti durante l'esecuzione di un comando non disponibile

  2. [OpenStack-Devstack]:Errore:il servizio n-net non è in esecuzione durante l'esecuzione di stack.sh

  3. Apache/Mysql non è in esecuzione. Sbagliato?

  4. CronJob non in esecuzione

  5. Lo script Nohup per Python non funziona durante l'esecuzione in background con &

Modulo non trovato quando eseguo un modprobe

Come visualizzare un cron job attualmente in esecuzione?

Codice Python per verificare se il servizio è in esecuzione o meno.?

comando non trovato quando si utilizza sudo

cron job occasionalmente non in esecuzione

Quando non dovrei uccidere -9 un processo?