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)\]"