zsh에서 HOSTNAME을 설정하는 방법은 무엇입니까?

zsh에서 HOSTNAME을 설정하는 방법은 무엇입니까?

Bash 설정에서는 다음을 $HOSTNAME사용하여 프롬프트 줄의 전체 길이를 간단히 계산할 수 있습니다. PS1_length=$((${#USER}+${#HOSTNAME}+${#PWDNAME}+12+${#PS1_GIT}))

예를 들어, 다음과 같은 채우기 선을 만들 때 유용합니다.여기에 이미지 설명을 입력하세요.

그러나 zsh올바르게 설정할 수 없으며 $HOSTNAME비슷한 동작을 시뮬레이션하는 방법이 생각나지 않습니다. 어떤 아이디어가 있습니까?

답변1

당신은 설정해야

HOSTNAME=$(hostname)

당신의~/.zshrc

또는 Caleb이 지적했듯이 변수 HOST 설정이 있으므로 프롬프트를 이식 가능하게 유지하려면 다음을 수행할 수도 있습니다.

HOSTNAME=$HOST

답변2

zsh프롬프트 확장을 사용하면 계산을 수행하지 않고 프롬프트를 실행할 수 있습니다.

PS1='%$COLUMNS>╡>%F{cyan}╔╡%F{red}[%n]%F{cyan}:%F{yellow}[%m]%F{cyan}➾%F{green}[%~]%F{default}$PS1_GIT%F{cyan}${(l:COLUMNS::═:):-}%<<
╚═╡%F{default}'

설명하다:

  • %$COLUMNS>╡>: 다음 이전 부분으로 오른쪽이 잘립니다( $COLUMNS단말기 너비에 따라 동적으로 설정된 변수).zsh%<<
  • %F{color}:전경색 설정
  • %n, %m, %~: 사용자 이름, 컴퓨터 이름(호스트 이름의 첫 번째 점까지), 현재 디렉터리( ~-named-dirs 포함).
  • ${(l:COLUMNS::═:):-}: 빈 문자열 왼쪽( ${:-}) 을 채워 $COLUMNS문자 길이를 채웁니다 .

%m처럼 ${HOST%%.*}. 전체 호스트 이름( $HOST)이 필요한 경우 을 사용하세요 %M.

답변3

잘못된 변수 이름을 사용했습니다. 환경 $HOSTNAME변수는 일반적으로 호스트 시스템의 init 루틴에 의해 설정되지만 항상 그런 것은 아닙니다. ZSH 구성 파일의 컨텍스트에서는 $HOST셸에서 명시적으로 설정한 환경 변수를 사용해야 합니다. 에서 man zshall:

쉘에 의해 설정된 매개변수
    […]
    HOST 현재 호스트 이름입니다.

ZSH는 해당 목록에 이를 설정하려고 시도하지 않으며 $HOSTNAME시스템 초기화 시스템의 변덕에 따라 설정하거나 설정하지 않을 뿐입니다.

또한 $HOST다른 쉘로의 이식성을 원하는 경우 크로스 플랫폼 쉘 스크립트에서 이것을 사용해서는 안 되지만(이 경우 hostname바이너리가 아마도 최선의 선택일 것임) ZSH 구성 파일의 맥락에서 쉘 자체 변수 사용하는 것이 가장 중요합니다.

관련 정보