Chris
Chris

Reputation: 1697

Custom PS1 prompt in .kshrc not working

I have to work with a NFS user id between two hosts: A running Ksh 93 and B running pdksh 88.

My problem has to do with the custom prompt I created on A: it works like a charm and display colors:

PS1="$'\E[46;31m'`logname`@$'\E[1;33m'`hostname -s`:$'\E[0m>"

But I switch over to B, it all goes to hell (private info removed). The prompt fails to display colors like host A ; instead, the color codes are displayed "in clear".

$'\E[46;31m'NFS_user_name@$'\E[1;33m'host_name_for_B:$'\E[0m>

The prompt on host B is not displaying colors like host A so I want B to display a basic prompt instead. To get around the problem, I edited my .kshrc file to add this code at the end:

export NODE=`uname -n`

case $NODE in
    host_name_for_B)
        PS1="[`logname`@`uname -n`]>"
        ;;
    *)
        PS1="$'\E[46;31m'`logname`@$'\E[1;33m'`hostname -s`:$'\E[0m>"
        ;;
esac

The case statement does not work: PS1 does not switch to

PS1="[`logname`@`uname -n`]>"

for host B.

Any idea what could be the problem?

Upvotes: 1

Views: 3842

Answers (2)

Paul Sweatte
Paul Sweatte

Reputation: 24627

Here's another one which works for both pdksh and ksh93:

PS1='<$LOGNAME@$HOSTNAME:/${PWD#/}>'

Upvotes: 0

Chris
Chris

Reputation: 1697

Thanks to a friend, this code for my prompt works across both hosts A and B:

PS1="$(printf "\033[46;31m%s@\033[1;33m%s\033[0m>" $(logname) $(hostname -s))"

Thanks to all for taking the time.

Upvotes: 3

Related Questions