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 "

즉, 셸 세션 중에 변경되지 않는 항목은 할당 시 확장됩니다( , , $문자가 `포함 되어 있지 않는 한 확장하라는 메시지가 표시될 때 확장되도록 리터럴 을 저장하려고 할 때마다 이러한 내용은 변경됩니다).\!$PWD$PWD$PS1$PWD


¹ 이러한 확장에 문자가 포함된 경우 !현재 기록 번호로 확장되므로 엄밀히 말하면 ${PWD//!/!!}( ${param//pattern/replacement}ksh93 연산자에도 불구하고)

답변2

나는 항상 사용

PS1=$(hostname):'$PWD
$ '

관련 정보