현재 bash 세션에서 bash 프롬프트 문자열을 어떻게 변경합니까?

현재 bash 세션에서 bash 프롬프트 문자열을 어떻게 변경합니까?

다음 bash 프롬프트 문자열이 있습니다.

root@LAB-VM-host:~# echo "$PS1"
${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 
root@LAB-VM-host:~# hostname 
LAB-VM-host
root@LAB-VM-host:~# 

이제 호스트 이름을 with 명령 LAB-VM-host으로 변경해도 이 bash 세션에 대한 프롬프트 문자열은 변경되지 않습니다.VM-hosthostname

root@LAB-VM-host:~# hostname VM-host
root@LAB-VM-host:~# 

현재 bash 세션에 대한 bash 프롬프트 문자열의 호스트 이름 부분을 업데이트하는 방법이 있습니까, 아니면 새 bash 세션에만 적용됩니까?

답변1

PS1다시 내보내면 다른 답변에서 알 수 있듯이 데비안은 실제로 변경된 호스트 이름을 선택합니까? 그렇다면 다음과 같이 새로 고칠 수 있습니다.

export PS1="$PS1"

데비안에 대해서는 모르지만 OS X Mountain Lion에서는 이것이 가능합니다.아니요어떤 영향을 미치나요? 다른 답변에서 제안된 명시적인 버전도 마찬가지입니다(위와 정확히 동일).

이것이 작동하더라도 실행 중인 각 셸에서 프롬프트를 개별적으로 재설정해야 합니다. 이 경우 새 호스트 이름으로 수동으로 설정해 보는 것은 어떨까요? 또는 새 셸을 시작합니다( 를 사용하여 하위 셸로 사용 bash하거나 실행 중인 프로세스를 으로 교체 exec bash). 호스트 이름이 업데이트됩니다.

실행 중인 모든 셸에서 호스트 이름 변경 사항을 자동으로 추적합니다., 다음에서 프롬프트를 설정하세요 .bashrc.

export PS1='\u@$(hostname):\w\$ '

또는 귀하의 경우:

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

즉, \h프롬프트를 로 바꾸고 $(hostname)작은따옴표로 묶어야 합니다. 이것은 hostname인쇄되는 모든 프롬프트 전에 실행되지만, 그래서 무엇입니까? 컴퓨터가 무릎을 꿇지 않습니다.

답변2

dr01에 따르면 다음을 사용해야 합니다.

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

하지만 위 줄은 일시적이므로 영구적으로 사용하려면 .bashrc또는.profile

답변3

호스트 이름은 프롬프트에서 자동으로 업데이트되지 않습니다. $PS1변수를 다시 내보내야 합니다 .

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

이 변수는 .bashrc출력의 라인 #1 및 #2에 표시된 것처럼 사용자 또는 다른 BASH 구성 파일에 이미 설정되어 있습니다. 그러나 호스트 이름이 수정된 후 새 프롬프트를 업데이트하려면 위 명령을 사용하여 변수를 다시 내보내야 합니다.

관련 정보