Perché root non genera .bash_profile?


10

Ogni volta che provo ad accedere come root usando su(non su -), non si trova .bash_profilenella directory home di user1.

Fondamentalmente, la mia /var/rootdirectory non ha .bash_profile, quindi ho messo una copia di .bash_profilein /var/rootper testare su -.

Nemmeno automaticamente .bash_profile(in var/root).

Ad ogni modo, desidero creare .bash_profile, dall'utente1, un account di root automaticamente quando uso su.

Cosa dovrei fare?

(Ha funzionato prima! Un giorno, non ha origine! Forse qualcosa ha cambiato le impostazioni in bash? Funziona quando entro source .bash_profiledopo il login.)

Sto usando Mac e OS X Yosemite.

Risposte:


11

La shell predefinita per rootsu OS X è /bin/sh. La sua shè anche una versione di bash, ma quando viene invocato con il nome shBash :

cerca di imitare il comportamento di avvio delle versioni storiche il shpiù vicino possibile, pur rispettando lo standard POSIX.

Quando viene invocato come shell di login interattiva o come shell non interattiva con l' --loginopzione, tenta innanzitutto di leggere ed eseguire i comandi da /etc/profilee ~/.profile, in quell'ordine. ... una shell invocata come sh non tenta di leggere ed eseguire comandi da nessun altro file di avvio

Cioè, non legge .bash_profileaffatto, indipendentemente dal fatto che sia stato invocato come shell di login o meno . Puoi .profileinvece usare o anche un collegamento simbolico tra loro. Se si avvia una shell di accesso con su -l, .profileviene caricata all'avvio, ma .bash_profilenon lo sarà mai.


Puoi anche usaredscl per cambiare la shell di root (notando che non/etc/passwd è usato per determinare la shell su OS X). Puoi controllare la shell corrente di root con ; consultare la documentazione e riflettere attentamente prima di cambiarla in qualcos'altro.dscl . -read /Users/root UserShell

Un altro approccio è semplicemente quello di cambiare la tua suinvocazione per forzare l'esecuzione bashimmediata.

Dato quello che hai detto, probabilmente consiglierei il collegamento simbolico, ma potresti voler esaminare le modifiche apportate dalla modalità POSIX di Bash e decidere se vuoi averle o meno.



5

L'utente root tenterà di eseguire il file .bashrc anziché il file .bash_profile poiché non si sta invocando una shell di accesso.

Dal manuale di bash man bash:

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bashrc
          The individual per-interactive-shell startup file

Nota ~dove deve trovarsi il file .bashrc nella directory home dell'utente root.

Per rispondere effettivamente alla tua domanda, se desideri utilizzare il file .bashrc di user1 ti suggerirei di creare un collegamento (simbolico) tra il .bashrc di origine da user1 all'utente root.

Puoi anche prendere in considerazione la fonte dell'utente1 .bashrc o persino .bash_profile aggiungendo la linea . /homedirectory/of/user1/.bash_profileal file .bashrc dell'utente root.

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.