검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 시스템
참조 원문 : What is the exact difference between a 'terminal', a 'shell', a 'tty' and a 'console'?

  • 터미널 = tty = 텍스트 입출력 환경
  • 콘솔 = 물리적인 터미널
  • 쉘 = 커맨드 라인 인터프리터
  콘솔, 터미널, tty는 서로 깊은 연관을 갖고 있는데 본래 이것들은 컴퓨터와 상호작용을 위한 장비를 뜻합니다. 초기 유닉스 시절에 타자기를 닮은 전신 타자기(텔리프린터) 스타일의 장비를 사용했으며 이를 텔리타입라이터나 이를 줄여 'tty'라고 불렀던 것이죠. 터미널이란 용어는 전자적 관점에서 생긴 용어이며, 콘솔은 가구적인 관점에서 생긴 용어입니다. 유닉스 역사 중 극초반 시절에는 전자 키보드와 디스플레이 한 세트가 터미널의 표준 모습이었습니다.

  유닉스 전문 용어로 tty는 단순히 읽기와 쓰기를 넘어 몇 가지 추가적인 명령어를 지원하는 디바이스 파일을 뜻합니다. 그리고 터미널은 사실상 이 tty와 동일한 의미로 사용됩니다. 일부 tty는 하드웨어 디바이스를 위해 커널이 제공하며 그 예로 키보드에서 들어오는 입력과 텍스트 모드 화면으로 나가는 출력, 시리얼 라인을 통해 전송되는 입출력이 있습니다. 그 외의 tty는 씬 커널 레이어를 통해 터미널 에뮬레이터라고 불리는 프로그램으로 제공되며 이런 tty를pseudo-tty로 부르기도 합니다. 터미널 에뮬레이터로는 Xterm(X 윈도우 시스템), Screen(프로그램과 다른 터미널 사이에 독립적인 계층을 제공), SSH(한 머신에서 프로그램으로 다른 머신의 터미널에 연결), Expect(스크립팅 터미널 인터랙션용) 등이 있습니다.

  터미널이라는 단어는 컴퓨터와 상호작용을 하기 위한 디바이스라는 더 고전적인 의미도 가지고 있는데 이는 일반적으로 키보드와 디스플레이로 구성됩니다. 예를 들어 X 터미널은 씬 클라이언트의 일종으로서 키보드, 디스플레이, 마우스, 경우에 따라 그 외의 인터랙션용 주변 장치의 수용만을 위해 존재하는 특수목적 컴퓨터이며 이때 실제 애플리케이션은 더 성능이 좋은 다른 컴퓨터에서 실행됩니다.

  콘솔은 일반적으로 머신과 직접 연결된 물리적인 1차 터미널을 말합니다. 콘솔은 OS에서 커널에 의해 tty로 나타납니다. 리눅스나 FreeBSD 등 일부 시스템에서는 다수의 tty가 존재합니다.(특수한 키 조합으로 이 tty사이를 옮겨다닐 수 있습니다.)

  은 유저가 로그인했을 때 볼 수 있는 1차 인터페이스로서 그 주목적은 다른 프로그램을 실행하는 것입니다. 유닉스에서는 커맨드라인 쉘을 뜻하는 경우가 대부분이며 다른 종류의 작업 환경에는 쉘이란 단어를 쓰지 않는 편인데 예를 들어 윈도우 시스템에서는 Window Manager와 Desktop Environment라는 용어를 사용합니다. 유닉스에는 많은 쉘이 있지만 대부분은 Bourne Shell의 문법을 기반으로 합니다. 터미널과 쉘의 업무영역을 구분짓는 것은 쉽지 않은편인데 아래는 주요 역할의 예제들입니다.
  • 입력: 터미널은 키를 컨트롤 시퀀스로 변환(예: 왼쪽 방향키 -> \e[D)시킵니다. 쉘은 컨트롤 시퀀스를 명령어로 변환(\e[D -> backward-char)시킵니다.
  • 줄 편집, 입력 히스토리, 자동 완성은 쉘에 의해 제공된다.
    • 터미널이 줄 편집, 히스토리, 자동 완성을 대신 제공하고 완성된 최종 내용을 쉘에 전달하는 경우도 있다. 일반 터미널 중 이런 방식으로 작동하는 것은 Emacs의 M-X 쉘 뿐이다.
  • 출력: 쉘이 "'foo'를 출력하라", "포어그라운드 색을 초록색으로 변경하라", "커서를 다음 줄로 옮겨라" 같은 명령을 내리고 터미널은 이 명령을 수행한다.
  • 프롬프트는 전적으로 쉘이 담당한다.
  • 쉘은 자신이 실행한 명령의 출력 결과를 전혀 보지 않는다.(단, 리다이렉트된 것은 제외.) 출력 히스토리(스크롤 되돌리기)는 전적으로 터미널이 담당한다.
  • 애플리케이션 사이의 복사/붙여넣기는 터미널이 제공한다.(일반적으로 마우스나 Ctrl+Shift+V, Shift+Insert 같은 키 시퀀스를 사용.) 쉘이 자체적인 복사/붙여넣기 메커니즘을 가지고 있는 경우도 있다.(예: Meta+W와 Ctrl+Y)

 

2013/06/23 13:47 2013/06/23 13:47