En ksh :
Dans mon .profile, j'ai défini la variable suivante (cette variable n'est définie qu'une fois par session, peu importe le nombre de 'su' que je fais :
PCH=\>
Dans mon .kshrc, j'ai :
if let "${SPID:-0} != $$"; then
PCHS="$PCHS$PCH"
Je deviens root avec l'alias suivant, plutôt que "su" (kroot est un utilisateur root avec un shell ksh au lieu de sh (solaris) ou bash (linux) :
alias root='PCH=\# su -m kroot'
alias me="PCH=\> su -m $USER"
J'ai également défini ces deux fonctions :
function lprompt {
PS1=$HOST' $? $PWD '"$PCHS "
}
function sprompt {
PS1='$?":"${PWD##*/}'"$PCHS "
et enfin à la fin de .kshrc j'ai :
lprompt
Tout cela me donne automatiquement la configuration par défaut de la fin de mon invite pour indiquer si je suis root (et par conséquent si j'ai un parent qui était root), le répertoire de travail actuel, le nom d'hôte et le statut de sortie du dernier processus. sprompt supprime le nom d'hôte, réduit le chemin uniquement au nom de base, et supprime les espaces :
g3 0 /home/jj33 > expr 1 / 0
expr: division par zéro
g3 2 /home/jj33 > expr 1 / 1
1
g3 0 /home/jj33 > root
Mot de passe :
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 par zéro
2:jj33>#>
Les alias root/me sont issus de l'administration pré-sudo sur Solaris et les vieilles habitudes ont la vie dure. Je doute que quelqu'un mettrait en œuvre exactement la même chose de nos jours. Les fonctions de changement de l'invite et le statut de sortie continuent à être très précieux pour moi.