我对 AIX 和 ksh 都很陌生,但目前我在工作中有一些停机时间,正在尝试将我的提示配置为彩色并显示我当前的位置。
目前,我仅在登录时获得正确的路径一次,之后它继续显示我的用户目录。颜色效果很好。日志名和主机名正确。
PS1="$(echo "\033[35m`logname`\033[34m@\033[35m`hostname` \033[36m`pwd`\033[1;35m\n\>\033[0m") "
无法显示屏幕截图,但示例输出在任何目录中都将如下所示:
userid@hostname /home/look/a/subfolder
>
我尝试了很多不同的版本,但我要么无法让它显示任何内容,要么所有特殊字符都按照 .profile 中的写入方式显示。
有什么想法我做错了吗?
编辑:感谢 Stéphane,ESC+CTRL+V 可以工作,它是 ksh88。操作系统7.1
答案1
尝试:
eval "$(print "
fg_magenta='\033[35m' fg_blue='\033[34m' fg_cyan='\033[36m'
nl='\n' bold='\033[1m' sgr0='\033[m'")"
PS1="$fg_magenta$LOGNAME$fg_blue@$fg_magenta$(uname -n) $fg_cyan\$PWD$bold$fg_magenta$nl>$sgr0 "
也就是说,在 shell 会话期间不会更改的内容,会在分配时展开它们(除非它们可能包含$
, `
, \
,!
字符,但$PWD
每当您想要将文字存储$PWD
到其中$PS1
以便$PWD
在提示扩展时进行扩展时,这些内容都会发生变化
¹ 请注意,如果这些扩展包含!
字符,它们将扩展为当前历史编号,因此严格来说应该是${PWD//!/!!}
(${param//pattern/replacement}
尽管是 ksh93 运算符)
答案2
我一直用
PS1=$(hostname):'$PWD
$ '