zshmisc
새로운 Debian Squeeze 설치 매뉴얼 페이지는 다음과 같습니다 SIMPLE PROMPT ESCAPES
:
%m
The hostname up to the first `.'. An integer may follow the '%' to specify how
many components of the hostname are desired. With a negative integer, trailing
components of the hostname are shown.
프롬프트에 OSX를 포함시키면 %2m
OSX와 Linux 간에 서로 다른 동작이 나타납니다 .
OSX(10.7.3)에서 zsh 4.3.11을 실행하면 프롬프트가 예상대로 작동하여 시스템 호스트 이름의 두 가지 주요 부분을 표시합니다.
Debian에서 zsh 4.3.10을 실행하면 프롬프트에 여전히 기본 호스트 이름만 표시됩니다. hostname -f
이 시스템에 전체 호스트 이름이 올바르게 설정되어 있는지 확인하십시오. 또한 이 zsh 버전의 맨페이지에는 %2m이 지원되어야 한다고 명시되어 있습니다.
디버깅을 시작할 위치에 대한 제안이 있는 사람이 있습니까?
답변1
zsh에 대한 간략한 살펴보기소스 코드 처리 팁%m
이는 시스템 호출 에 대해 시스템이 반환하는 gethostname
내용을 기반으로 하는 것이 좋습니다 . 선택의 여지 hostname
없이 달리는 것과 같습니다 .-f
나는 달리고 있다고 가정한다.hostname
아니요 -f
Debian 시스템에서 기본 호스트 이름을 반환하시겠습니까?
도메인 이름을 포함하도록 호스트 이름을 변경해 볼 수 있습니다. 데비안호스트 이름 문서 변경/변경 방법이것을 도와야합니다. 그러나 일부 데비안 도구는 호스트 이름에 도메인 이름이 포함되어 있지 않다고 가정하므로 이는 좋지 않은 생각일 수 있습니다.
명령 대체를 사용하는 것이 더 합리적일 수 있습니다.
먼저 PROMPT_SUBST 옵션을 설정하세요.
setopt PROMPT_SUBST
그런 다음 명령을 실행하고 다음과 같이 출력을 프롬프트에 넣을 수 있습니다.
PS1='$(hostname -f)$ '
호스트 이름의 처음 몇 부분만 얻으려면 다음을 사용할 수 있습니다.cut
,예를 들어
PS1='$(hostname -f | cut -f 1-2 -d .)$ '
호스트 이름은 변경되어서는 안 되므로 명령을 한 번만 실행하고 변수에 저장한 다음 해당 변수를 사용하면 더 효율적일 수도 있습니다.
HOSTANDSUBDOMAIN="$(hostname -f | cut -f 1-2 -d .)"
PS1="$HOSTANDSUBDOMAIN$ "