Alterando o comportamento do prompt do bash ao funcionar como root

12

Antes de clicar, esta não é a pergunta típica "como faço para que o meu bash tenha cor". Eu já personalizei meu prompt bash para ficar assim:

[user @ host]----[$(pwd)]
$ 

onde tudo entre colchetes é azul claro e tudo o mais (incluindo $) é preto, adicionando o seguinte ao meu arquivo ~ / .bashrc

# Turn the prompt symbol red if the user is root
if [ $(id -u) -eq 0 ];
then # you are root, make the prompt red
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n\e[01;31m#\e[00m "
else
    PS1="[\e[01;34m\u @ \h\e[00m]----[\e[01;34m$(pwd)\e[00m]\n$ "
fi

O objetivo é fazer com que a única coisa que muda quando eu uso 'sudo su' é que o $ preto muda para um # vermelho. Eu olhei em /etc/bash.bashrc e / etc / profile para ver se há apenas uma linha para comentar, mas há um monte de coisas sobre debian_chroot que eu não entendo, e eu não quero estragar alguma coisa. Como posso realizar o que quero?

P.S. Isto é o que eu quero que o prompt seja parecido como root

[user @ host]----[$(pwd)]
(red)#

edit: Marque isso como resolvido, anexando o código acima em ~ / .bashrc enquanto o root realiza meu objetivo. Além disso, no código acima, $ (pwd) exibe apenas o diretório inicial (eu acho que porque esse é o diretório de trabalho quando o terminal é aberto) e nunca atualiza. Substituir $ (pwd) por \ w corrige isso, mas exibe o diretório home como ~ , o que eu estava tentando evitar.

    
por zmitchell 07.06.2013 / 01:01

3 respostas

10

Também depende de como você se torna o usuário root. Você precisa fazer a alteração no .bashrc do usuário root se estiver usando algo como su - root ou sudo -i , onde você lê no ambiente.

Com sudo -s , você deve estar lendo seu próprio .bashrc.

Considere adicionar algumas instruções printf ou echo para depurar seu código, para informar quando ele foi executado.

Use o comando id para garantir que você é quem você pensa:

root@tau:~# id
uid=0(root) gid=0(root) groups=0(root)
    
por belacqua 07.06.2013 / 01:03
2

Seguindo a resposta válida do belacqua link , emitindo o sudo su, o .bashrc da raiz é carregado.

Você pode verificar isso emitindo sudo su , seguido por cd ~ . Você verá que está no diretório inicial da raiz.

Usando sudo su , você efetua login como root (su = alternar usuário), ao contrário de sudo do some administrative task como usuário com privilégios elevados.

Portanto, usando sudo su você se torna a raiz real e as alterações feitas no ambiente são feitas especificamente para raiz, ou seja: sudo su seguido por vim .bashrc .

    
por Stef K 07.06.2013 / 01:15
2

Para alterar a cor do prompt para vermelho para raiz, eu modifiquei o arquivo .bashrc , seguindo os exemplos deste tópico.

regularuser@myubuntubox:~$ sudo su - 
root@myubuntubox:~# vim .bashrc

Em seguida, no vim, pesquise a aparência final da atribuição PS1 e inclua isto após ela (observe que ela atualiza o valor de $PS1 para que outras linhas anteriores não precisem ser modificadas e a alteração é facilmente reversível):

# Set RED prompt
PS1="\[\e[01;31m\]$PS1\[\e[00m\]"
    
por CJBS 23.01.2015 / 23:43