.kshrc中的自定义PS1提示无法正常工作

时间:2011-01-18 22:28:10

标签: shell unix ksh

我必须在两台主机之间使用NFS用户ID:运行Ksh 93和B运行pdksh 88。

我的问题与我在A上创建的自定义提示有关:它就像魅力和显示颜色一样:

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

但是我切换到B,这一切都变成了地狱(删除了私人信息)。提示无法显示主机A等颜色;相反,颜色代码显示为“清晰”。

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

主机B上的提示未显示主机A等颜色,因此我希望B显示基本提示。为了解决这个问题,我编辑了我的.kshrc文件以在最后添加此代码:

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

case语句不起作用:PS1不切换到

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

主持人B.

知道可能是什么问题吗?

2 个答案:

答案 0 :(得分:3)

感谢朋友,我的提示代码适用于主机A和B:

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

感谢所有人抽出时间。

答案 1 :(得分:0)

这是另一个适用于pdksh和ksh93的文件:

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