윈도우 CMD 창 프롬프트에 hostname 표시하기

윈도우의 prompt 명령어는 리눅스 bash의 $PS1 변수와 비슷하다.


기본적으로 위 그림과 같이 현재 위치와 ">" 기호가 표시된다. 이 기본값은 아래와 같다.

prompt $P$G

더 자세한 표현을 알아보려면 prompt /? 를 입력해보자. 아래와 같이 도움말이 나올 것이다.

C:\Users\Administrator>prompt /?
cmd.exe 명령 프롬프트를 바꿉니다.
PROMPT [문자열]
  문자열  새 명령 프롬프트를 지정합니다.
프롬프트는 일반 문자와 다음의 특수 코드로 만들어질 수 있습니다.
  $A   & (앰퍼샌드 기호)
  $B   | (파이프)
  $C   ( (왼쪽 괄호)
  $D   현재 날짜
  $E   이스케이프 코드 (ASCII 코드 27)
  $F   ) (오른쪽 괄호)
  $G   > ('보다 크다' 기호)
  $H   백스페이스 (이전 문자 지움)
  $L   < ('보다 작다' 기호)
  $N   현재 드라이브
  $P   현재 드라이브와 경로
  $Q   = ('와 같다' 기호)
  $S     (공백)
  $T   현재 시간
  $V   Windows 버전 번호
  $_   캐리지 리턴과 라인 피드
  $$   $ (달러 기호)
명령 확장을 사용하면 PROMPT 명령은 아래와 같은 추가 형식의
문자를 지원합니다.
  $+   밀어 넣어지는 각 수준에 한 문자씩, PUSHD 디렉터리 스택 높이에
       따라 0개 이상의 + 기호 문자.
  $M   현재 드라이브 문자에 연결된 원격 이름을 표시하거나
       현재 드라이브가 네트워크 드라이브가 아닐 경우
       빈 문자열을 표시합니다.

그렇다면 hostname을 표시하려면 어떻게 해야 할까?

단순하게 생각하면 된다. 그냥 prompt 명령어 뒤에 hostname을 직접 넣으면 된다. 예를 들어 hostname이 WIN2008R2라고 한다면 아래와 같이 직접 입력하면 된다. hostname은 예쁘게 대괄호로 감싸주자.

prompt [WIN2008R2] $P$G

그러면 아래 그림처럼 된다.


대량으로 작업해야 한다면 일일이 hostname을 입력할 수 없으니 아래와 같이 하면 되겠다.

prompt [%COMPUTERNAME%] $P$G

그런데 이 prompt 명령어는 현재 CMD 창에만 해당된다. 새로운 CMD 창을 열면 기본 값으로 표현된다.

만약 CMD 창을 열 때마다 변경된 prompt가 뜨도록 하려면 어떻게 해야 할까? 마치 리눅스 bash에서 $PS1 변수를 bashrc 파일에 정의해주는 것 처럼 말이다.

아래와 같이 레지스트리에 등록해주면 된다.

A) 현재 사용자에게만 적용

reg add "HKCU\SOFTWARE\Microsoft\Command Processor" /v AutoRun /d "PROMPT [%COMPUTERNAME%] $P$G" /f

A-1) 현재 사용자 원복

reg delete "HKCU\SOFTWARE\Microsoft\Command Processor" /v AutoRun /f

B) 전체 사용자에게 적용

reg add "HKLM\SOFTWARE\Microsoft\Command Processor" /v AutoRun /d "PROMPT [%COMPUTERNAME%] $P$G" /f

B-1) 전체 사용자 원복

reg delete "HKLM\SOFTWARE\Microsoft\Command Processor" /v AutoRun /f