stty는 Set Terminal TYpes의 약자(또는 Set TTY의 약자)로, 현재 세션이 연결된 터미널 라인(Terminal Line)의 설정을 출력하거나 변경하는 명령어입니다.
컴퓨터가 키보드 입력을 처리하고 화면에 출력을 보내는 방식을 제어하는 데 사용됩니다.
stty 명령의 가장 중요한 역할은 터미널의 입력 처리 모드를 변경하는 것입니다. 모드는 크게 두 가지가 있습니다.
| 모드 | 속성 | 설명 |
|---|---|---|
| Cooked Mode (기본 모드) | icanon, echo | 일반적인 셸 모드입니다. 사용자가 줄바꿈(Enter)을 누를 때까지 입력 버퍼에 문자를 모아두고, Delete, Backspace 등의 편집 키를 미리 처리합니다. 또한, 입력한 문자를 화면에 반향(Echo)하여 보여줍니다. |
| Raw Mode (원시 모드) | -icanon, -echo | 특수 셸 모드입니다. 키보드로 입력된 모든 문자를 즉시, 가공 없이 프로그램(셸)에게 전달합니다. 편집 키나 Ctrl+C 같은 제어 문자도 프로그램으로 바로 전달됩니다. |
stty raw -echo; fg 분석사용자님께서 입력하신 명령어 조합은 비대화형 셸을 완벽하게 안정화하는 표준적인 방법입니다.
stty raw -echo이 부분은 stty 명령에 두 가지 설정을 한 번에 적용한 것입니다.
raw: 원시 모드 (Raw Mode)를 활성화합니다.icanon (정규 입력 처리) 설정을 비활성화하고 isig (인터럽트 신호 처리) 설정 등을 비활성화하는 것을 포함합니다. 즉, 셸이 키보드 입력을 즉시 처리하게 만듭니다.-echo: 반향 (Echo) 기능을 비활성화합니다.-echo를 설정하면 입력이 처리되긴 하지만 화면에는 보이지 않습니다. (마치 비밀번호 입력하는 것처럼요.)💡 왜 -echo가 필요할까요?
이 명령어 조합을 사용하기 직전에 Ctrl+Z를 눌러서 셸을 잠시 일시 정지(Suspend)시켰습니다. 이때 fg 명령으로 이 셸을 다시 포그라운드(Foreground)로 가져올 것인데, stty raw만으로는 출력이 이상하게 중복될 수 있습니다. -echo를 추가해 이 중복 현상을 방지하고 깔끔한 화면을 유지합니다.
; (세미콜론)두 명령어를 순차적으로 실행하도록 구분하는 기호입니다.
fg (Foreground)이전에 Ctrl+Z를 눌러 백그라운드 (Background)로 보냈던 (일시 정지된) 셸 프로세스를 다시 포그라운드 (Foreground)로 불러와 실행을 재개하는 명령어입니다.
python -c 'import pty;pty.spawn("/bin/bash")': TTY (Teletype)와 유사한 가상 터미널 환경을 만들어 Bash 셸을 획득했습니다. (불안정한 셸)export TERM=xterm: 프로그램들이 터미널 기능을 인식할 수 있도록 TERM 변수를 설정했습니다. (방향키, Tab 완성 등을 위한 설정)^Z (Ctrl+Z): 현재 실행 중인 셸 프로세스를 일시 정지하고 백그라운드로 보냈습니다.stty raw -echo: 터미널의 입력 처리 모드를 Raw Mode로 바꾸고, 화면 반향(echo)을 껐습니다.fg: 백그라운드에 있던 (일시 정지된) 셸을 다시 포그라운드로 불러와 실행을 재개했습니다.이 과정을 거치면, Tab 자동 완성, 화살표키, Ctrl+C, Ctrl+Z 등이 모두 정상적으로 작동하는 완벽하게 안정화된 대화형 셸을 갖게 되어 본격적인 권한 상승 작업을 진행할 수 있게 됩니다.