‘터미널’, ‘쉘’, ‘tty’및 ‘콘솔’의 정확한 차이점은 무엇입니까? 같은 것을

느슨하게 사용될 때 이러한 용어는 거의 같은 것을 의미한다고 생각합니다.

  • 단말기
  • 껍질
  • tty
  • 콘솔

이 용어들 각각은 정확히 무엇을 의미합니까?



답변

터미널은 전선 끝에 있고 쉘은 거북이의 집이며 tty는 이상한 약어이며 콘솔은 일종의 캐비닛입니다.

어쨌든 어원 적으로 말하면

유닉스 용어에서 짧은 대답은

  • 터미널 = tty = 텍스트 입력 / 출력 환경
  • 콘솔 = 물리적 터미널
  • 쉘 = 명령 줄 인터프리터

콘솔, 터미널 및 tty는 밀접한 관련이 있습니다. 원래 그들은 유닉스 초기에 컴퓨터와 상호 작용할 수있는 장비를 의미했습니다. 이것은 타이프 라이터와 유사한 텔레 프린터 스타일의 장치로 , 텔레 타이프라이터 (teletypewriter)라고도하며, 속기는“tty”였습니다. “터미널”이라는 이름은 전자적 관점에서,“콘솔”이라는 이름은 가구 관점에서 나왔습니다. 유닉스 역사 초기에 전자 키보드와 디스플레이가 터미널의 표준이되었습니다.

유닉스 용어로, tty 는 읽기 및 쓰기 이외 의 많은 추가 명령 ( ioctls ) 을 구현하는 특정 종류의 장치 파일 입니다 . 가장 일반적인 의미에서 터미널 은 tty와 동의어입니다. 일부 tty는 하드웨어 장치를 대신하여 커널에서 제공합니다. 예를 들어 키보드에서 입력을 받고 출력을 텍스트 모드 화면으로 보내거나 입력 및 출력을 직렬 회선을 통해 전송합니다. pseudo-ttys 라고도하는 다른 tty 는 Xterm ( X Window System 에서 실행 ), Screen 과 같은 터미널 에뮬레이터 라는 프로그램에 의해 (씬 커널 계층을 통해) 제공됩니다.(프로그램과 다른 터미널 간의 격리 계층 제공), Ssh (한 시스템의 터미널을 다른 시스템의 프로그램과 연결), Expect (스크립팅 터미널 상호 작용의 경우) 등

단어 터미널은 또한 컴퓨터와 일반적으로 키보드 및 디스플레이와 상호 작용하는 장치의보다 전통적인 의미를 가질 수 있습니다. 예를 들어, X 터미널은 일종의 씬 클라이언트 (thin client)로 , 키보드, 디스플레이, 마우스 및 때로는 다른 인간 상호 작용 주변 장치를 구동하고 실제 응용 프로그램을보다 강력한 다른 컴퓨터에서 실행하는 특수 목적 컴퓨터입니다.

콘솔은 일반적으로 어떤 정의하여 컴퓨터에 연결된 단말 기본 물리적 인 의미에서 단말이다. 콘솔은 운영 체제에 (커널 구현) tty로 나타납니다. Linux 및 FreeBSD와 같은 일부 시스템에서는 콘솔이 여러 개의 tty로 나타납니다 (특별 키 조합이이 tty간에 전환됨). 문제를 혼동하기 위해 각 특정 tty에 부여 된 이름은 “콘솔”, “가상 콘솔”, “가상 터미널”및 기타 변형이 될 수 있습니다.

참조 왜 가상 터미널 “가상”, 무엇을 / 왜 / “진짜”터미널입니까? .


쉘은 그 주된 목적은 다른 프로그램을 시작하는 것입니다 그들은 로그인 할 때 사용자에게 표시되는 기본 인터페이스입니다. (원래의 은유가 쉘이 사용자의 홈 환경인지 또는 쉘이 다른 프로그램에서 실행되고 있는지 여부는 알 수 없습니다.)

유닉스 서클에서 명령 줄 을 전문으로 하며 시작하려는 응용 프로그램의 이름을 입력 한 다음 응용 프로그램이 작동 해야하는 파일 또는 기타 객체의 이름을 입력하고 Enter 키를 누릅니다. 다른 유형의 환경에서는 “쉘”이라는 단어를 사용하지 않습니다. 예를 들어, 창 시스템에는 “쉘”이 아닌 ” 창 관리자 “및 ” 데스크탑 환경 “이 포함됩니다.

유닉스 쉘에는 여러 가지가 있습니다. 대화식으로 사용 되는 일반적인 셸에는 Bash (대부분의 Linux 설치에서 기본값), zsh (전원 및 사용자 지정 가능성 을 강조 함) 및 fish (단순성을 강조 함)가 포함됩니다.

명령 줄 셸에는 명령을 결합하기위한 흐름 제어 구문이 포함되어 있습니다. 대화식 프롬프트에서 명령을 입력하는 것 외에도 스크립트를 작성할 수 있습니다. 가장 일반적인 쉘에는 Bourne_shell 기반의 공통 구문이 있습니다 . “ 쉘 프로그래밍 ”을 논의 할 때 , 쉘은 거의 항상 Bourne 스타일 쉘로 암시됩니다. 스크립팅에 자주 사용되지만 고급 대화식 기능이없는 일부 쉘에는 Korn 쉘 (ksh) 및 많은 변형이 포함됩니다. 대부분의 유닉스 계열 시스템에는 /bin/sh일반적으로 ash, ksh 또는 bash 와 같은 Bourne 스타일 쉘이 설치되어 있습니다.

유닉스 시스템 관리에서, 사용자의 은 로그인 할 때 호출되는 프로그램입니다. 일반 사용자 계정에는 명령 줄 셸이 있지만 액세스가 제한된 사용자에게는 제한된 셸 이나 다른 특정 명령 (예 : 파일 전송)이있을 수 있습니다. 계정 만).


터미널과 쉘 사이의 분업은 완전히 분명하지 않습니다. 주요 작업은 다음과 같습니다.

  • 입력 : 터미널이 키를 제어 순서로 변환합니다 (예 : Left\e[D). 쉘은 제어 순서를 명령으로 변환합니다 (예 : \e[Dbackward-char).
  • 쉘은 라인 편집, 입력 히스토리 및 완료를 제공합니다.
    • 터미널은 자체 라인 편집, 히스토리 및 완료를 대신 제공 할 수 있으며 실행 준비가 완료된 경우에만 쉘로 라인을 보낼 수 있습니다. 이런 식으로 작동하는 유일한 공통 터미널 M-x shell은 Emacs입니다.
  • 출력 : 쉘은 “디스플레이 foo“, “포 그라운드 색상을 녹색으로 전환”, “커서를 다음 행으로 이동”등과 같은 명령을 내 보냅니다. 터미널은이 명령에 따라 작동합니다.
  • 프롬프트는 순전히 쉘 개념입니다.
  • 쉘은 그것이 경로 재 지정되지 않는 한, 그것이 실행하는 명령의 출력을 보지 않습니다. 출력 기록 (스크롤 백)은 순전히 터미널 개념입니다.
  • 응용 프로그램 간 복사 붙여 넣기는 터미널에서 제공합니다 (보통 마우스 또는 Ctrl+ Shift+ V또는 Shift+ 와 같은 키 시퀀스를 사용하여 Insert). 셸에는 자체 내부 복사-붙여 넣기 메커니즘도있을 수 있습니다 (예 : Meta+ WCtrl+ Y).
  • 백그라운드에서 프로그램을 시작하고 관리하는 작업 제어 는 대부분 쉘에서 수행합니다. 그러나 Ctrl+ 와 같은 키 조합을 처리 C하여 포 그라운드 작업을 종료하고 Ctrl+ Z를 중단 하는 터미널입니다 .

답변

단말기콘솔은 사용자가 호스트와 상호 작용할 수있는 하드웨어를 사용하는 부분이다. 기본적으로 텍스트 화면과 연결된 키보드.
오늘날 거의 모든 터미널과 콘솔은 “가상”을 나타냅니다.

터미널을 나타내는 파일은 전통적으로 tty 파일 이라고 합니다. UNIX 시스템의 “/ dev”디렉토리를 보면 가상 콘솔 (예 : Linux의 tty1), 가상 터미널 (예 : pts / 0) 또는 물리적으로 연결된 하드웨어 (예 : ttyS0)에 연결된 많은 tty 파일이 있습니다. 호스트의 첫 번째 직렬 포트에 연결된 실제 직렬 터미널입니다 (있는 경우).

콘솔 하드웨어 물리적 접속 (또는 그 일부)는 호스트의 일부이어야한다. 시스템에서 특별한 역할을 수행합니다. 유지 보수를 위해 시스템에 액세스하는 주요 지점이며 일부 특수 작업은 콘솔에서만 수행 할 수 있습니다 (예 : 참조 single user mode). 단말기 , 그리고 일반적으로, 하드웨어의 원격 피스 캔.

마지막으로 제어 tty를 통해 사용자와 상호 작용하고 다른 프로그램 (예 : bash, csh, tcsh)을 시작하는 방법을 사용자에게 제공 하는 특수 프로그램입니다 .

단말기 에뮬레이터는 실제 단말기 (예 xterm이 그놈 단자, 전무)를 에뮬레이트하는 프로그램이다.

따라서 리눅스 시스템 (X11 아래)에서 “텍스트 창”을 살펴보면 가상 터미널에 연결된 터미널 에뮬레이터 ( tty 파일로 식별 됨) 가 을 실행합니다 .


답변

짧은 설명 :

콘솔은 터미널입니다. 시스템에는 하나의 콘솔과 여러 개의 터미널이 있습니다. 콘솔은 일반적으로 예를 들어 여전히 부팅중인 컴퓨터를 관리하기위한 기본 인터페이스입니다.

터미널은 명령 행 프로그램의 입력 및 출력을 수신 및 송신 할 수있는 세션입니다. 콘솔은 특별한 경우입니다.

TTY는 본질적으로 의사 장치입니다. 커널 리소스라고하며 프로세스에서 특정 터미널에 액세스하는 데 사용됩니다. TTY는 직렬 포트와 같은 하드웨어에 연결되거나 가상 일 수 있습니다 (예 : 사용자가 네트워크를 통해 로그인 할 때 생성됨)

쉘은 프로그램을 제어하고 실행하는 데 사용되는 프로그램입니다. 종종 터미널을 통해 대화식으로 사용됩니다. Bash가 오늘날 가장 일반적으로 사용되는 셸 프로그램이 여러 개 있습니다. 특별한 순서가 아닌 다른 쉘에는 Bourne Shell, C-shell, Dash, Tsch, Ksh 및 점점 인기있는 zsh가 포함됩니다. 더 많은 것이 있습니다.

GUI가 있으면 터미널 프로그램을 사용하여 터미널 크기 조정이 가능한 멋진 테두리를 그리거나 스크롤 막대를 추가하고 텍스트 등을 포맷 할 수 있습니다. 이들은 종종 터미널 에뮬레이터라고하며 때로는 TAB 개념을 통해 여러 세션을 처리 할 수 ​​있습니다. 터미널 에뮬레이터는 종종 대화식으로 명령 줄에서 작업 할 수 있도록 셸을 시작합니다.


답변

TTY (즉, T ELE TY pewriter가), 청각 장애 청각, 또는 어려운 사람들이 할 수있는 특별한 장치들이 문자 메시지를 입력 할 수 있도록하여, 사용을 통신 할 수있는 전화 연설을 장애인. 대화를하려면 대화의 양쪽 끝에 TTY가 필요합니다.
OR
TTY 는 문자 메시지를 입력하는 데 사용되는 터미널 입니다.


: 씨앗 즉 커널의 외부 보호 덮개 부분.
시스템의 중앙 또는 필수 부분에 대한
OR
프레임 워크 또는 외부 구조.


콘솔 은 키보드와 모니터가 컴퓨터에 물리적으로 부착 된 것을 의미합니다.


답변

이미 두 가지 훌륭한 답변이 있지만 “가상 터미널” 이라는 문구에 대한 정보를 추가하려고합니다 . 일반적으로, 이는 단말기의 외관 / 기능을 제공하는 것을 의미한다. 이자형. 넓은 의미 의 . 그러나 초기 리눅스 (1994-95)는 일부 개발자들에 의해 “가상 콘솔”(여러 관련없는 사용자 인터페이스)과 동의어로 사용 되었습니다. 이 사용법은 문서에서 지속됩니다. 서로 다른 두 용어는 tty1, tty2… 현재 (1996 년 이후)“가상 터미널”은 기반 터미널 에뮬레이터를 지칭 할 수도 있습니다 .

리눅스 vt(텍스트 모드 시스템 콘솔의 드라이버)는 커널의 첫 번째 조각이었다. 처음에는 메인 프레임에 연결하는 데 사용되었으며 이런 의미에서 “가상 터미널”이므로 이름입니다. 가상 콘솔을 제어하는 코드 에 있습니다vt.c 뿐만 아니라. Linux 커널 엔지니어는 “콘솔”이라는 단어를 일관되게 사용하여 tty1, tty2…를 나타내며 “vc_”접두사를 사용했습니다. 예를 들어 vc_allocate기능이 있습니다. 한편, 같은 사용자 공간 도구의 개발 kbdconsole-tools사용 “가상 콘솔”(VC)과 상호 교환 “가상 터미널”(VT). Ī̲ 님이 Andries E. Brouwer 님 에게 연락했습니다초기 개발자 (1994–95)가 사용한 용어를 명확하게 해달라고 요청했습니다. Andries는 친절하게 답변을 제공했습니다. 그는 VT와 VC는 동의어이며 “보이지 않는”약어라고 말합니다. -> 일반적으로 가상 콘솔은 가상 터미널이지만 대화는 사실이 아닙니다. 가상 콘솔이 아닌 “가상 터미널”은 실제로 의사 터미널입니다 (Andries가 말했듯이 VT는 아닙니다 ). 커널이 콘솔 응용 프로그램에 터미널 기능을 제공하는 가상 콘솔과 달리 의사 터미널 은 PTY“장치”를 사용하여 콘솔 응용 프로그램과 사용자 공간에서 실행되는 터미널 제작 프로그램 간의 통신을 정렬합니다 . X 기반 터미널 에뮬레이터와sshd각 로그인 세션에 의사 의사를 할당합니다. 의사는“콘솔”이라고 부르지 않을 수도 있습니다. 실수입니다.


답변

  • 터미널 = 출력용 디스플레이와 쉘 세션에 입력하기위한 키보드를 제공하는 인터페이스입니다.

  • Shell = 문자열로 입력 된 명령을 실행하는 인터프리터

  • 콘솔 : 실제로 사용하는 두 가지 유형의 콘솔

    • 물리적 콘솔 = 시스템과 상호 작용하는 데 사용되는 하드웨어 디스플레이 및 키보드

    • 가상 콘솔 = 각각 독립적 인 로그인 세션을 지원할 수있는 여러 논리 콘솔 중 하나입니다.

  • tty (텔레 타입 즉 터미널). = 터미널은 기본적으로 입력 및 출력 메시지에 텍스트를 사용하는 사용자 인터페이스 장치입니다.


답변

역사 속으로 뛰어 들어야합니다.

종이와 키보드가있는 타자기와 같은 장치가있었습니다. 그것들은 텔레타이프 ( “원격”은 “원격”을 의미하기 때문에 “원격 타입”을 의미 함) 또는 짧게 tty 라고 불렸다 . 70 년대에 그들은 유리 ttys 라고 불리는 CRT 모니터를 가진 장치들에 의해 폐기되었습니다 .

모든 컴퓨터는 상태 및 오류를보고하고 명령을 수락 할 수있는 방법이 필요합니다. 거의 항상 컴퓨터에 직접 연결된 콘솔 을 통해 수행 됩니다. 따라서 콘솔에 대한 두 가지 의미 가 있습니다. 상태를보고하는 데 사용되는 것과 직접 연결된 것입니다.

UNIX는 대화식 시스템입니다. 여러 사용자가이 시스템에 연결하여 응용 프로그램을 시작할 수 있습니다. 첫 번째 컴퓨터는이를 위해 텔레타이프 ( tty )를 사용했습니다. 각 사용자는 텔레타이프를 직렬 회선 연결로 컴퓨터에 연결했습니다. 이러한 텔레타이프를 터미널 이라고 합니다. 유닉스는 또한 “터미널 뒤에 앉아있는 사용자”를 처리 할 수있는 특별한 서브 시스템을 가지고 있는데,이 터미널은 텔레타이프이기 때문에 tty 라고도한다 . 각 프로세스는 유닉스에서 tty에 연결될 수 있습니다. 그것은 사용자가 터미널 근처에 앉아 있다는 것을 의미합니다. 자세한 내용은 http://www.linusakesson.net/programming/tty/ 를 참조 하십시오 .

커널에게 응용 프로그램을 실행하도록 지시하는 방법이 필요합니다. (sh, bash, csh, ksh 등)이 사용됩니다. shelltty 에서 실행되고 사용자의 명령을 수락하고 커널에게 일부 앱을 실행하도록 요청합니다.

그러나 터미널이 항상 물리적으로 기계에 연결되는 것은 아닙니다. 사용자로부터 키 입력을 받아들이고 어딘가에 키 터미널을 “모방”하는 응용 프로그램이있을 수 있습니다 (xterm 및 ssh가 좋은 예입니다). 커널에는 pseudo terminal 이라는 API 가 있습니다. 따라서 tty 는 실제 터미널 대신 일부 응용 프로그램에 실제로 연결될 수 있습니다. Xterm은 X11을 사용하여 텍스트를 표시하고 ssh는 네트워크 연결을 사용합니다.

IBM PC에는 키보드 및 비디오 카드가 있습니다 ( 때로는 콘솔 이라고도 함). 리눅스는 다른 일을 할 수 있습니다 :

  • “오류 및 상태를보고하는 엔진”으로 사용하십시오 : Linux 콘솔. console = / dev / ttyS0을 커널에 전달하면 COM1에 연결된 것을 콘솔로 사용하고 그렇지 않으면 PC 콘솔을 사용합니다.
  • 가상 터미널 (vty) 이라고하는 터미널을 에뮬레이션하는 데 사용하십시오 .

또한 콘솔에서 터미널 에뮬레이션을 중지하고 일부 앱에 제공 할 수 있습니다. 앱이 비디오 모드를 전환하여 독점적으로 사용할 수 있습니다 (X11 또는 svgalib가이를 수행 할 수 있음).

여기 현대적인 의미가 있습니다.

  • 터미널 : 실제 사용자가 뒤에 앉아있는 것. 물리적 터미널 (희귀) 또는 의사 터미널 (xterm, ssh) 또는 가상 터미널 (Linux의 경우 vty)
  • shell : 사용자가 시스템과 상호 작용하는 데 도움이되는 응용 프로그램 (bash, tcsh 등)
  • tty : 터미널을 지원하기위한 터미널 또는 커널 서브 시스템.
  • 콘솔 : 상태 및 오류가보고 된 것 ( /dev/console) 또는 컴퓨터에 연결된 물리적 키보드 및 비디오 디스플레이.