Ksh

AIX 上的 ksh - 更改文件夾時提示中的 pwd 不更新

  • January 19, 2022

我對 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。AIX 7.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 運算符)

引用自:https://unix.stackexchange.com/questions/687005