В кш:
В моем .profile я установил следующую переменную (таким образом, эта переменная устанавливается только один раз за сеанс, независимо от того, сколько я делаю su:
PCH=\>
В моем .kshrc у меня есть:
if let "${SPID:-0} != $$"; then
PCHS="$PCHS$PCH"
fi
Я становлюсь пользователем root со следующим псевдонимом, а не с «su» (kroot - это пользователь root с оболочкой ksh вместо sh (solaris) или bash (linux):
alias root='PCH=\# su -m kroot'
alias me="PCH=\> su -m $USER"
Я также определил эти две функции:
function lprompt {
PS1=$HOST' $? $PWD '"$PCHS "
}
function sprompt {
PS1='$?":"${PWD##*/}'"$PCHS "
}
и, наконец, в конце .kshrc у меня есть:
lprompt
Все это дает мне по умолчанию автоматическую настройку конца моего приглашения, чтобы указать, являюсь ли я пользователем root (и, в свою очередь, если у меня есть родитель, являющийся пользователем root), текущим рабочим каталогом, именем хоста и состоянием завершения последнего процесса. sprompt удаляет имя хоста, сокращает путь до базового имени и удаляет пробелы:
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>#>
Псевдонимы root / me созданы администрацией pre-sudo в Solaris, и старые привычки устарели. Я сомневаюсь, что кто-то может реализовать то же самое в эти дни. Функции быстрой смены и существующий статус остаются для меня очень ценными.