PS1 não está sendo redefinido por sudo , ele é mantido por padrão. As funções fazem parte do ambiente bash, mas não são preservadas por sudo . Você pode fazer várias coisas:
- use
sudo su - para obter um shell de login que redefinirá PS1
- defina
env_reset para "limpar" o ambiente, possivelmente com env_keep
- definir
SUDO_PS1 e sudo colocará esse valor em PS1
- use
sudo -i , que é semelhante a su - (você precisará adicionar seu shell ao arquivo sudoers )
- verifique a variável
SUDO_COMMAND em seu .bashrc e redefina PS1
A lista de variáveis que sudo mantém (pode variar por versão, verifique env.c na origem) inclui:
DISPLAY COLORS LS_COLORS HOSTNAME PS1 PS2 TZ
Esta é uma lista codificada, não é a mesma coisa que env_keep (ou seja, " env_keep -= " não irá alterá-la).
Execute sudo -V como root para obter uma lista completa de variáveis preservadas ou removidas (para sudo version > = v1.7).
Uma sugestão final, você poderia tornar seu PS1 mais robusto, verificando se a função existe:
PS1="\[$(tput setaf 7)\]\w \$(type -t parse_git_branch >/dev/null && parse_git_branch)> \[$(tput sgr0)\]"