.bash_profile non proveniente quando si esegue su


41

Ho un utente, per esempio user1, che ha modifiche al suo .bash_profile, uno di essi cambiare il PATH, es export PATH=/some/place:$PATH. Questa modifica funziona correttamente se accedo come user1o faccio un su - user1.

Ma se provo ad eseguire un comando tramite suas root, ad esempio:

su -c test.sh oracle

(il test contiene echo $PATH)

Non sembra avere il modificato PATH(o root PATH, del resto ). Ho anche provato a copiare .bash_profilea .profile, senza alcun risultato.

Perché sta succedendo?


usare --login passare asu
Nikhil Mulley il

1
Cordiali saluti - bel writeup sui file di configurazione di bash hacktux.com/bash/bashrc/bash_profile
Nikhil Mulley

Risposte:


60

L'uso susenza -lo -inizia bashcome una shell interattiva, ma non di accesso, che non legge da nessuno dei file specificati. Utilizzare l' -lo -di opzione o mettere il config rilevanti in /root/.bashrc.

Riepilogo rapido dei file di configurazione:

  • Accesso shell ( -l/ --login) legge /etc/profileprima, e poi la prima che trova di: ~/.bash_profile, ~/.bash_login, e ~/.profile.
  • La shell interattiva (ma non di accesso -i) legge /etc/bash.bashrce ~/.bashrc, in questo ordine (a meno che l' --rcfileopzione non venga utilizzata e gli dica di cercare altrove).
  • Le shell non interattive, ad esempio avviate da un altro programma senza usare i flag -lo -i, leggono il file specificato nella BASH_ENVvariabile di ambiente.
  • Quando eseguito come shshell di login, leggerà /etc/profilee ~/.profile, in questo ordine.
  • Quando eseguito come shun non login interattivo, legge il file specificato in ENV.

5

Bash si comporta in modo diverso a seconda se ritiene che si tratti di una shell di accesso, ovvero la prima shell eseguita quando si accede a un sistema. Legge solo .bash_profilese si tratta di una shell di accesso. Se invece inserisci il PATHcodice -changing .bashrc, verrà eseguito per tutte le shell bash interattive, non solo per le shell di accesso.


0

Se si utilizza l'ambiente Gnome in Scientific Linux 6 (o presumibilmente RHEL 6), avviare un terminale. Vai a Edit-> Profile Preferences-> "Title and Command"scheda. Assicurarsi che la casella di controllo "Esegui comando come shell di accesso" sia selezionata. Ho scoperto che l'applicazione del terminale Gnome sta ignorando la mia a .bash_profilemeno che non lo faccia.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.