호스트 이름을 변경했는데 왜 bash PS1 프롬프트가 변경되지 않습니까?

호스트 이름을 변경했는데 왜 bash PS1 프롬프트가 변경되지 않습니까?

/etc/hostname을 편집하여 호스트 이름을 변경했으며 및 명령을 사용하여 새 호스트 이름을 볼 수 hostname있습니다 hostname -F.

그러나 쉘 프롬프트에는 여전히 이전 호스트 이름이 표시됩니다.

그런데, 이것은 우분투 11.0.4입니다. 프롬프트는 내 것으로 설정되어 .bashrc있으며 편집하지 않았습니다. 로그아웃하거나 다시 시작해도 아무런 효과가 없습니다.

표준 Ubuntu의 관련 부분 .bashrc:

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi

(로그인할 때 $debian_chroot가 설정되지 않았습니다...)

호스트 이름은 특수 문자 \h로 선택되는 것 같습니다.

이는 셸에 보고된 PS1 설정입니다.

PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

이것이 PS1이 보여주는 것입니다:

username@oldhostname:~$ 

Warren의 답변에 나온 정확한 명령을 사용하여 프로세스를 반복했습니다. 호스트 이름은 재부팅할 때까지 유효했지만 /etc/hostname새 호스트 이름이 포함된 경우에도 손실된 것으로 나타났습니다 .

답변1

나는 Keith와 Warren의 이전 답변과 실제 솔루션을 기반으로 내 자신의 질문에 대답하고 있습니다. 인지된 문제는"호스트 이름을 변경했는데 왜 bash PS1 프롬프트가 변경되지 않았나요?"실제 문제는"재부팅 시 시스템이 이전 호스트 이름으로 되돌아가는 이유는 무엇입니까?"

이 특별한 경우에 대한 대답은 다음과 같습니다.DHCP는 로컬 설정을 무시하도록 구성됩니다.

호스트 이름을 변경하는 효율적인 방법

다음은 우분투에 대한 것입니다.ymmv.

  1. 이 파일을 편집하여 영구 호스트 이름을 변경하십시오 /etc/hostname.

    echo 'mynewhostname' | sudo tee /etc/hostname
    
  2. 실행 중인 시스템의 호스트 이름을 변경하려면 다음을 사용하십시오.CPU 이름주문하다. 1단계가 없으면 재부팅 시 재설정됩니다. 방금 설정한 값을 사용하는 것이 좋습니다.

    sudo hostname -F /etc/hostname
    

    또는 그에 상응하는 것:

    sudo hostname `cat /etc/hostname`
    
  3. .NET에서 FQDN(정규화된 도메인 이름)을 설정합니다 /etc/hosts.

    발췌:

    127.0.0.1    mynewhostname.mydomainname.com    mynewhostname
    
  4. 컴퓨터가 DHCP 클라이언트를 실행하고 있는지 확인하십시오. IP 주소 외에도 DHCP 서버는 호스트 이름 및 DNS 확인과 같은 설정을 재정의할 수도 있습니다. "클라우드" 호스팅 서비스는 구성 파일을 편집하지 않고도 디스크의 컴퓨터 이미지를 여러 번 재사용할 수 있도록 이 작업을 수행할 수 있습니다.

    있는 경우 DHCP 클라이언트 구성 파일을 편집하여 /etc/default/dhcpcd이 지시어를 주석 처리합니다 SET_HOSTNAME.

    #SET_HOSTNAME='yes'
    
  5. 가능하다면 시스템을 다시 시작하고 이름이 변경되었는지 확인하세요.

    hostname
    

4단계는 나에게 새로운 것이었고 나를 당황하게 만들었다. 이 답변에 전체 프로세스를 문서화하는 것이 유용할 것이라고 생각했습니다. 이 단계는 (Linode)에서 제공되었습니다.내 호스팅 서비스에 대한 설명정말 제대로 읽었어야 했는데.

답변2

이 파일은 /etc/hostname호스트 이름의 영구 복사본을 보유하고 있으며 시작 중에 런타임 복사본을 설정하는 데 사용됩니다. 다시 시작하지 않고 런타임 복사본을 변경하려면 다음과 같이 말하세요.

$ sudo hostname `cat /etc/hostname`

hostname(1)또는 새 호스트 이름을 명령 에 대한 인수로 전달하면 됩니다 .

답변3

  • h다음을 대문자로 사용하세요 PS1:

    PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ '
    

답변4

/h그때 FQDN을 언급 하셨군요 PS1. 이제 사용하려는 이전 호스트 이름과 새 호스트 이름을 게시해 주시겠습니까?

  • /h첫 번째 "." 앞에 호스트 이름을 표시합니다.
  • /H전체 FQDN 표시

시도 해봐

관련 정보