Em ksh:
No meu .profile, defino o seguinte var (portanto, esse var é definido apenas uma vez por sessão, não importa quantos sus eu faça:
PCH=\>
No meu .kshrc eu tenho:
if let "${SPID:-0} != $$"; then
PCHS="$PCHS$PCH"
fi
Tornei-me root com o seguinte alias, em vez de "su" (o kroot é um usuário root com um shell ksh em vez de sh (solaris) ou bash (linux):
alias root='PCH=\# su -m kroot'
alias me="PCH=\> su -m $USER"
Eu também defini essas duas funções:
function lprompt {
PS1=$HOST' $? $PWD '"$PCHS "
}
function sprompt {
PS1='$?":"${PWD##*/}'"$PCHS "
}
e finalmente no final de .kshrc eu tenho:
lprompt
Tudo isso me fornece, por padrão, a configuração automática do final do meu prompt para indicar se sou ou não root (e, por sua vez, se tenho um pai que era root), diretório de trabalho atual, nome do host e status de saída do último processo. sprompt elimina o nome do host, reduz o caminho até o nome da base e remove os espaços:
g3 0 /home/jj33 > expr 1 / 0
expr: division by zero
g3 2 /home/jj33 > expr 1 / 1
1
g3 0 /home/jj33 > root
Password:
g3 0 /home/jj33 ># me
g3 0 /home/jj33 >#> ^D
g3 0 /home/jj33 ># sprompt
0:jj33># me
g3 0 /home/jj33 >#> sprompt
0:jj33>#>expr 1 / 0
expr: division by zero
2:jj33>#>
Os aliases root / me são da administração pré-sudo no Solaris e os velhos hábitos morreram muito. Duvido que alguém possa implementar exatamente a mesma coisa nos dias de hoje. As funções de mudança imediata e o status existente continuam sendo muito valiosas para mim.