AIX 上的 ksh - 更改文件夹时提示中的 pwd 不会更新

AIX 上的 ksh - 更改文件夹时提示中的 pwd 不会更新

我对 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
$ '

相关内容