내 홈 디렉터리 다음에 디렉터리를 표시하는 bash 프롬프트를 만듭니다.

내 홈 디렉터리 다음에 디렉터리를 표시하는 bash 프롬프트를 만듭니다.

예를 들어, 내 홈 디렉터리가 "FirstLast"이고 다음 위치에 있는 경우

/usr/FirstLast/Dir1/Dir2/Dir3

내 메시지를 읽어주길 원해요

[username@srv1 Dir1]

내 디렉토리가 아무리 깊어도 상관 없습니다. 따라서 내가 Dir2에 있든 Dir3에 있든 프롬프트에는 "Dir1"이 표시되어야 합니다.

pwd를 사용하여 전체 경로를 표시하고 싶지 않으며 현재 디렉터리도 원하지 않습니다.

답변1

strings에서는 (소문자) \W대신 (대문자 W)를 사용합니다 . 예를 들어\wPS1

PS1='[\u@\h \W] '

에서 man bash:

\w 현재 작업 디렉터리, 물결표로 축약된 $HOME(변수 값 사용 PROMPT_DIRTRIM )

\W$HOME물결표로 축약된 현재 작업 디렉토리의 기본 이름

에서는 변수를 bash설정할 수도 있습니다 PROMPT_DIRTRIM.

PROMPT_DIRTRIM

\w0보다 큰 숫자로 설정되면 이 값은 확장 및 \W 힌트 문자열을 이스케이프할 때 유지할 후행 디렉터리 구성 요소의 수로 사용됩니다 (아래 팁 참조). 삭제된 문자는 줄임표로 대체됩니다.


프롬프트가 항상 현재 디렉토리보다 두 레벨 위의 디렉토리(또는 유사하게 복잡하거나 특이한 디렉토리)를 표시하도록 하려면 다음을 사용해야 합니다.명령 대체PS1 문자열 내.

PS1 문자열은 큰따옴표가 아닌 작은따옴표로 묶어야 합니다. 그렇지 않으면 프롬프트가 표시될 때마다 다시 계산하는 대신 PS1이 정의될 때 명령 하위 집합의 반환 값을 얻게 됩니다.

예를 들어

PS1='[\u@\h $(basename $(realpath ../../))] '

답변2

이런 일이 발생하면 에서 현재 zsh경로에 대한 변수를 설정하십시오 . 이것이 당신이 원하는 것입니다.%-2dPROMPT

내 거 .zshrc:

PROMPT="[username@srv1 %-2d]"

관련 정보