Modifica prompt dei comandi del terminale per utente root in Sierra

0

Posso modificare il prompt dei comandi di bash per il terminale per un utente normale senza problemi. (Nel mio caso, ho modificato la variabile $ PS1 in / etc / bashrc.) Tuttavia, tale modifica non modifica il prompt dei comandi quando si elevano i privilegi a root usando sudo -s .

Qualcuno sa dove la preferenza del prompt dei comandi è memorizzata su una macchina macOS Sierra (10.12.5) per un utente amministratore che ha elevato i suoi privilegi a root usando sudo -s ?

Ho provato a modificare i seguenti file ...

  • /var/root/.bash_profile
  • /var/root/.bash_rc
  • / var / root / bash_rc
  • /var/root/.profile
  • ~ / .profile

Ho anche provato a usare il comando export PS1="Some prompt here# " , che modifica temporaneamente il prompt di root, ma non si attacca quando la sessione è terminata e ne viene avviato uno nuovo.

    
posta Tim Dearborn 13.07.2017 - 21:46
fonte

3 risposte

1

Dal manuale sudo :

-s, --shell    Run the shell specified by the SHELL environment variable if it is set or the shell
               specified by the invoking user's password database entry.  If a command is specified, it
               is passed to the shell for execution via the shell's -c option.  If no command is
               specified, an interactive shell is executed.

Una shell interattiva leggerà .bashrc dell'utente invocato. Quindi, la soluzione di Tony Williams funzionerebbe se è nella tua .bashrc . Ma la soluzione di da4 dovrebbe funzionare anche se è posizionata in .bash_profile .

    
risposta data 15.07.2017 - 14:10
fonte
2

Aggiungi la variabile di ambiente SUDO_PS1 al tuo ~/.bash_profile e poi export alla variabile, ad esempio:

export SUDO_PS1="\[\h:\w\] \u\$ "

Nota tuttavia questo cambierà solo il prompt di root come appare dopo aver aumentato i tuoi diritti tramite sudo .

Un buon elenco di variabili prompt può essere trovato qui.

    
risposta data 13.07.2017 - 23:34
fonte
1

Suppongo che tu non stia effettuando l'accesso al tuo Mac come root dato che abilitare l'accesso root è una cosa veramente brutta .

Quindi stai usando il comando sudo -s per aprire una shell di root dal tuo login. In tali circostanze, il profilo gestito è il tuo. Il modo migliore per apportare eventuali modifiche, ad esempio al prompt, è utilizzare if nel tuo profilo, ad esempio

# color prompt and make root red
if [ 'id -u' = 0 ]
then
    PS1="\[3[31m\]\h:\W \u\$\[3[0m\] "
else
    PS1="\[3[34m\]\h:\w \u\$\[3[0m\] "
fi

In questo esempio, il primo PS1 è per root e imposta il prompt su rosso e il secondo PS1 è per qualsiasi altro utente, ad es. tu. Puoi anche apportare qualsiasi altra modifica all'ambiente che desideri in if .

    
risposta data 14.07.2017 - 06:35
fonte

Leggi altre domande sui tag