명령 프롬프트
1. 개요
명령 프롬프트는 사용자가 컴퓨터에 명령을 입력할 수 있도록 하는 인터페이스로, 셸 프롬프트, 이메일 주소 등 다양한 환경에서 사용된다. 셸 프롬프트는 환경 변수를 통해 형식을 설정할 수 있으며, 운영체제별로 다양한 형태를 가진다. MS-DOS와 윈도우에서는 PROMPT 환경 변수를, 유닉스 계열 셸에서는 PS1 변수를 사용하여 프롬프트 형식을 변경할 수 있다. 명령 프롬프트는 프로그램 실행을 위한 입력을 받는 역할을 하며, 백그라운드 프로세스 실행 시에도 표시된다.
이미지 준비중입니다.
| 종류 | 명령 줄 인터프리터 |
|---|---|
| 개발사 | 마이크로소프트 |
| 출시일 | 1987년 |
| 최신 버전 | 10.0.10240.16384 (윈도우 10) |
| 운영 체제 | OS/2 마이크로소프트 윈도우 윈도우 CE |
| 플랫폼 | IA-32 |
| 사용 가능 언어 | 다국어 |
| 기본 파일 확장자 | .BAT, .CMD |
|---|
| 전신 | COMMAND.COM |
|---|
2. 이메일 주소에서의 사용 예
명령 프롬프트의 간단한 형식은 이메일 주소에서 쉽게 찾아볼 수 있다.
`user@이메일호스트`
`사용자@도메인`
3. 셸 프롬프트 (PS1)
셸 프롬프트 라인의 형식은 환경 변수 `PS1` 설정값에서 표현된다. `PS1`에서는 일반적으로 사용자는 `$` 기호를, 슈퍼유저는 `#` 기호를 권장하며 `PS2`에서는 일반 사용자에게 `>` 기호를 권장한다. 셸 프롬프트 라인의 형식을 원하는 표현으로 변경 후 저장할 수 있으며, `.bashrc`에서 `PS1` 값을 등록 및 설정할 수도 있다.
| `> export PS1="PS \w > "` |
| `PS ~/000/aaa >` |
많은 명령 인터프리터에서는 명령 프롬프트로 표시하는 문자를 자유롭게 변경할 수 있으며, 현재 디렉터리, 호스트 이름, 현재 시간 등을 명령 프롬프트로 표시하는 경우가 있다.
예를 들어, MS-DOS 계열의 COMMAND.COM(그리고 그 후속인 cmd.exe)에서 표준적인 명령 프롬프트는 환경 변수 PROMPT를 "$P$G"로 설정한 것으로, 다음과 같이 표시된다.
: 드라이브 문자 + ":" + 현재 디렉토리의 경로 문자열 + ">"
```doscon
C:¥>
```
(¥는 ISO/IEC 646의 5/12 (0x5C)이며 환경에 따라 표시가 다르다. 한국어에서는 원화 기호(반각의 "¥"), 영어권에서는 역슬래시(반각의 "\").)
유닉스 계열 셸에서는 일반적으로 호스트명 등 뒤에 "%", "$", ">" 또는 "#" 기호를 붙인다. ("#"는 슈퍼유저를 나타낸다.)
COMMAND.COM 계열에서는 환경 변수 PROMPT를 바꿈으로써 표시 내용을 바꿀 수 있다.
```doscon
C:¥Windows>SET PROMPT
PROMPT=$P$G
C:¥Windows>SET PROMPT=$T$G
18:08:52.95>
3.1. Bash에서의 PS1
Bash 셸에서는 `PS1` 변수를 통해 프롬프트의 내용을 자유롭게 변경할 수 있다.
`PS1`에서 사용 가능한 특수 문자는 다음과 같다:
* `\u`: 사용자 이름
* `\h`: 호스트 이름
* `\w`: 현재 작업 디렉토리
* `\l`: 터미널
예시:
```console
pacman@onyx2$ echo $PS1
\u@\h$
pacman@onyx2$ PS1='\l@\h$ '
ttyp0@onyx2$
4. 운영체제별 명령 프롬프트
운영체제별로 명령 프롬프트는 다양한 형태로 나타난다.
MS-DOS 계열의 COMMAND.COM과 그 후속인 cmd.exe에서는 표준 명령 프롬프트가 `드라이브 문자:현재 디렉토리>` 형태로 표시된다. 예를 들어 `C:₩>`와 같이 표시되는데, 여기서 '₩'는 환경에 따라 원화 기호(¥)나 역슬래시(\)로 나타난다. `PROMPT` 환경 변수를 변경하여 표시 내용을 바꿀 수 있다.
유닉스 계열 셸에서는 일반적으로 호스트명 등을 표시하고 "%", "$", ">", "#" 기호를 붙인다. "#" 기호는 슈퍼유저 권한으로 명령을 입력하고 있음을 나타낸다. 예를 들어 `host1$`와 같이 표시된다. Bash에서는 셸 변수 PS1-PS4를 변경하여 표시 내용을 바꿀 수 있다.
PC-9801 시리즈에서는 하드웨어적으로 텍스트를 그래픽 위에 겹쳐서 표시하는 기능과 사용자 정의 글꼴을 지원하여, 명령 프롬프트에 애니메이션을 구현하기도 했다.
4.1. MS-DOS (COMMAND.COM, cmd.exe)
MS-DOS 계열의 COMMAND.COM(그리고 그 후속인 cmd.exe)에서 표준적인 명령 프롬프트는 환경 변수 PROMPT를 "$P$G"로 설정한 것으로, 다음과 같이 표시된다.
: 드라이브 문자 + ":" + 현재 디렉토리의 경로 문자열 + ">"
구체적으로는 다음과 같다.
: C:₩>
여기서 '₩'는 ISO/IEC 646의 5/12 (0x5C)에 해당하며 환경에 따라 다르게 표시된다. 한국어에서는 원화 기호(반각의 "¥")로, 영어권에서는 역슬래시(반각의 "\")로 나타난다. 과거에는 "$N$G"로 설정하여 A>처럼 표시되었다.
COMMAND.COM 계열에서는 환경 변수 PROMPT를 변경하여 표시 내용을 바꿀 수 있다. 예를 들면 다음과 같다.
: C:\Windows>SET PROMPT
: PROMPT=$P$G
: C:\Windows>SET PROMPT=$T$G
: 18:08:52.95>
4.2. 유닉스 계열 셸
유닉스 계열 셸에서는 셸마다 경향의 차이가 있지만, 일반적으로 호스트명 등을 표시하고 "%", "$", ">" 또는 "#" 기호를 붙인다. "#" 기호는 슈퍼유저로 명령을 입력하고 있음을 나타내는 관례이며, 이는 상당히 일반적이다.
예:
```text
host1$
```
많은 명령 인터프리터에서는 명령 프롬프트로 표시하는 문자를 자유롭게 변경할 수 있으며, 명령 인터프리터 사용의 편의를 위해 현재 디렉토리, 호스트 이름, 현재 시간, 실행 중인 작업(→작업 관리 시스템)의 수 등을 명령 프롬프트로 표시하는 경우가 있다.
Bash에서는 셸 변수 PS1-PS4를 바꿈으로써 표시 내용을 바꿀 수 있다.
```text
pacman@onyx2$ echo $PS1
\u@\h$
pacman@onyx2$ PS1='\l@\h$ '
ttyp0@onyx2$
4.3. PC-9801 시리즈 (일본)
PC-9801 시리즈는 하드웨어적으로 텍스트를 그래픽 위에 겹쳐서 표시(슈퍼임포즈)하는 기능이 있었고, 188자의 외자 영역 글꼴을 사용자 정의(프로그래밍 가능)할 수 있었다. 이러한 특징을 이용하여 명령 프롬프트에 외자 문자를 넣고, 상주 프로그램으로 실시간으로 글꼴을 변경하여 지구본이 회전하는 등의 애니메이션을 구현하기도 했다.
5. 명령 프롬프트와 프로그램 실행
프롬프트는 "입력을 요구하는 것"을 의미하며, 명령을 입력할 수 있는 상태일 때 명령 프롬프트를 표시한다. MS-DOS와 같은 단일 작업 환경에서는, 명령 인터프리터에서 입력한 명령에 의한 프로그램이 실행 중인 동안에는 명령 프롬프트가 표시되지 않고, 그 프로그램이 출력하는 문자열이 화면에 표시되며, 프로그램이 종료되는 동시에 명령 프롬프트가 표시된다.
유닉스의 대부분의 셸이 가지는 "작업 관리 기능" 등에서는 프로세스를 백그라운드로 실행할 수 있다. 그 경우에는 프로세스가 백그라운드에서 실행되는 동시에 명령 프롬프트가 표시된다. 즉, 명령 프롬프트가 표시되어 있다는 것은 그 셸에 대해 명령을 입력할 수 있음을 나타낸다.