Para ksh93 (como seu eksh
aparentemente e /usr/bin/ksh
no Solaris 11):
LOGNAME=$(logname)
HOSTNAME=$(hostname)
PS1='$(printf "\e[37m%s:\e[34m%s\e[4m%*s\e[m\n# " \
"$LOGNAME@$HOSTNAME" "$PWD" \
"COLUMNS - ${#LOGNAME} - ${#HOSTNAME} - ${#PWD} - 2")'
ksh88 (como /usr/bin/ksh
no Solaris 10) não tem $COLUMNS
e não expande as substituições de comandos em $PS1
(embora faça a expansão de parâmetros), mas você poderia fazer algo como:
LOGNAME=$(logname)
HOSTNAME=$(hostname)
get_COLUMNS() {
COLUMNS=$(stty -a)
COLUMNS=${COLUMNS#*columns = }
COLUMNS=${COLUMNS%%;*}
}
get_COLUMNS
trap get_COLUMNS WINCH
ESC=$(printf '')
s=
while ((${#s}<300)); do
pad[${#s}]=$s
s="$s "
done
PS1="$ESC[37m\$LOGNAME@\$HOSTNAME:$ESC[34m\$PWD$ESC[4m\
"'${pad[COLUMNS - ${#LOGNAME} - ${#HOSTNAME} - ${#PWD} - 2]}'"$ESC[m
# "
(esse também deve funcionar com o ksh93 e o bash. Primeiro um testado com sucesso com / usr / bin / ksh no Solaris 11 (93u 2011-02-08) e no Debian (93u + 2012-08-01) e deve funcionar com 93t + 2009-05-01 também. Segundo, testado com sucesso com / usr / bin / ksh (M-11/16 / 88i) e / usr / dt / bin / dtksh (93d) no Solaris 10)