겹쳐 쓰는 세 단어
‘터미널을 열어’라는 말은 보통 터미널 에뮬레이터를 띄우고 그 안에서 셸을 사용하라는 뜻이야. 일상에서는 터미널, 셸, 콘솔을 비슷한 말처럼 쓰지만 실제로는 한 작업 환경의 서로 다른 층이야. 셋을 구분하면 화면, 입력, 명령 해석 가운데 문제가 정확히 어느 층에 있는지 좁히기 쉬워. 같은 터미널 앱에서도 다른 셸을 시작할 수 있고, 다른 터미널 앱 두 개가 같은 셸을 실행할 수도 있어.
터미널은 화면과 입력을 맡아
터미널 에뮬레이터는 글자를 화면에 그리고 키 입력을 안쪽 프로그램에 전달하는 앱이야. ls의 뜻을 해석하거나 실행 파일을 고르지는 않아. macOS의 Terminal.app, iTerm2, Warp, Alacritty, Kitty, WezTerm과 VS Code·Cursor의 통합 터미널이 같은 역할을 해. 글꼴, 색, 복사·붙여넣기와 키 전송 설정은 이 층에서 찾아. 화면에 보이는 글자는 셸이나 그 자식 프로세스가 보낸 출력이고, 터미널은 그 내용을 그려 주는 쪽이야.
셸은 명령을 해석해
셸은 터미널 안에서 실행되며 입력을 명령과 인자로 나누고 $PATH에서 실행 파일을 찾아 시작해. zsh, bash, fish, nushell, PowerShell이 셸이고, macOS는 Catalina부터 새 계정의 기본 셸로 zsh를 사용해. 변수 확장, 리디렉션, 파이프라인, 별칭과 함수처럼 명령을 조립하는 규칙도 셸이 맡아. 따라서 창의 색을 바꾸는 일과 명령 문법을 바꾸는 일은 서로 다른 설정을 찾아야 해.
콘솔은 문맥에 따라 뜻이 달라져
원래 콘솔은 컴퓨터나 서버에 직접 연결된 물리 키보드와 화면을 뜻했어. macOS의 Console.app은 로그 뷰어이고, Linux의 가상 콘솔과 브라우저 개발자 도구의 JavaScript 콘솔도 서로 다른 대상이야. 누가 콘솔이라고 말하면 물리 장치, 운영체제 화면, 로그 앱, 언어 REPL 가운데 무엇을 가리키는지 확인해.
내 컴퓨터에서 구분해 보기
서로 다른 터미널 앱 두 개에서 echo $SHELL을 실행해 봐. 창은 달라도 같은 셸 경로가 나올 수 있어. 터미널 앱을 바꾸는 일과 명령을 해석하는 셸을 바꾸는 일이 서로 다른 층이라는 가장 간단한 증거야. 비교할 때는 두 앱의 창 모양이 아니라 명령이 실제로 출력한 셸 경로를 증거로 삼아.
역시 단어를 정확하게 아는게 중요하지! 피파 고마워!