como obter terminal para mostrar prompt de root no su

0

Estou logado em um usuário (normal), mas quando vou su: senha meu promt normal vai me mostrar isso em vez do que deveria. como consertar isso?

ターミナル 10:15 AM (~) $ su
Password: 
3[1;31mターミナル \@ 3[1;33m(3[1;34m\W3[1;33m) 3[1;31m$ 3[0m

Estou usando essa declaração de caso para alterar prompts, dependendo de qual termo é disparado.

which_term(){
    term=$(ps -p $(ps -p $$ -o ppid=) -o args=);
    found=0;
    case $term in
        *terminator*)
            found=1
            export PS1="\@ \[\e[34;43m\]\w\[\e[m\]\$ "
             if [ -f /usr/bin/screenfetch ]; then screenfetch; fi
            ;;
        *terminology*)
            found=1
            #  echo "terminology "  
            export PS1=" \[\e[31m\]%\[\e[35m\]\u\[\e[m\]\[\e[36m\]@\[\e[m\]\[\e[35m\]\h\[\e[m\] \[\e[32m\]\T\[\e[m\] \[\e[36m\]\w\[\e[m\]\[\e[31m\] >>$\[\e[m\]\'nonzero_return\' "  

            if [ -f /usr/bin/screenfetch ]; then screenfetch; fi
            ;;
        urxvt*)
            found=1
           # echo "rxvt " 
            #PS1='%\u@\h \@ \W >>\$' 
            export PS1="\[\e[33m\]%\[\e[m\]\[\e[31m\]\u\[\e[m\]\[\e[33m\]@\[\e[m\]\[\e[31m\]\h\[\e[m\]:\[\e[36m\]\@\[\e[m\]\[\e[33m\]\w\[\e[m\]\[\e[31m\] >>\[\e[m\]\[\e[33m\]\$\[\e[m\] "
            #export PS1='3[1;31mターミナル 3[1;33m(3[1;34m\W3[1;33m)\@3[1;31m\$ 3[0m'
            ;;
        Eterm*)
            found=1
            export PS1="\d \@ Scooby-Doo\w\$ "

           # if [ -f /usr/bin/screenfetch ]; then screenfetch -t; fi

            ;;
        aterm*)
            found=1
             export PS1="\d \@ Aterm\w\$ "
             ;;
        roxterm*)
            found=1
             export PS1='% \@ \u@\h \W>>\$'
            ;;
        mrxvt*)
            found=1
            export PS1="\[\e[31m\]\T\[\e[m\]\[\e[33m\]@\[\e[m\]\[\e[31m\]\u\[\e[m\]\[\e[34m\]\h\[\e[m\]\[\e[35;42m\]\W\[\e[m\] "

            ;;

        ## Try and guess for any others
        *)
        export PS1='3[1;31mターミナル \@ 3[1;33m(3[1;34m\W3[1;33m) 3[1;31m\$ 3[0m'

     if [ -f /usr/bin/screenfetch ]; then screenfetch -t; fi
            ;;
    esac
    ## If none of the version arguments worked, try and get the 
    ## package version
    [ $found -eq 0 ] && echo "$term " $(dpkg -l $term | awk '/^ii/{print $3}')    
}    

which_term
    
por uxserx-bw 09.02.2016 / 17:33

1 resposta

0

O que eu acredito que está acontecendo é que sua função which_term() está sendo executada em seu contexto de login pessoal. Nesse contexto, todas as alterações imediatas funcionarão. Quando você usa o comando su (usuário substituto), você está alternando para um contexto de usuário diferente. Nesse caso, você invocará o .bashrc do usuário de destino no contexto de destino; no seu caso, é o usuário padrão, root chamando .bashrc do root.

Se você quiser substituir isso, você deve fazê-lo manualmente. Por exemplo, se seu nome de usuário for userxbw , depois que o comando su fornecer um prompt, a execução de source ~userxbw/.bashrc fornecerá seu arquivo .bashrc pessoal. No entanto, esta é uma prática perigosa quando rodando como root, já que você pode ter comandos em seu .bashrc que são perigosos quando executados como super-usuário.

    
por 20.02.2016 / 20:16