Ksh
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。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 運算符)