"터미널", "쉘", "tty" 및 "콘솔"의 정확한 차이점은 무엇입니까?

"터미널", "쉘", "tty" 및 "콘솔"의 정확한 차이점은 무엇입니까?

나는 이 용어들이 느슨하게 사용될 때 거의 같은 의미라고 생각합니다.

  • 단말기
  • 껍데기
  • 단말기
  • 편안

이 용어는 정확히 무엇을 의미합니까?

답변1

터미널은 전선의 끝, 인클로저는 거북이의 집, tty는 이상한 약어, 콘솔은 일종의 캐비닛입니다.

뭐, 어쨌든 어원적으로 말하자면요.

유닉스 용어로 짧은 대답은 다음과 같습니다.

  • 터미널 = tty = 텍스트 입출력 환경
  • 콘솔 = 물리적 터미널
  • 쉘 = 명령줄 해석기

콘솔, 터미널 및 tty는 밀접하게 관련되어 있습니다. 원래는 컴퓨터와 상호 작용할 수 있는 장치를 의미했습니다. Unix 초기에는 이는 다음을 의미했습니다.텔레타이프라이터- 때때로 텔레타이프라이터 또는 간단히 "tty"라고 불리는 타자기와 유사한 장치입니다. "터미널"이라는 이름은 전자제품의 관점에서 유래되었으며, "콘솔"이라는 이름은 가구의 관점에서 유래되었습니다. Unix 역사 초기에 전자 키보드와 모니터는 터미널의 표준 기능이 되었습니다.

유닉스 용어로,단말기특별하다장치 파일많은 추가 명령을 구현합니다(I/W 제어) 읽고 쓰는 능력을 넘어. 가장 일반적인 의미로는,단말기tty의 동의어입니다. 일부 tty는 키보드 입력 및 텍스트 모드 화면 출력 또는 직렬 회선을 통해 전송되는 입력 및 출력과 같은 하드웨어 장치를 대신하여 커널에서 제공됩니다. 다른 tty, 때때로 호출됨의사 tty, 다음과 같은 프로그램에 의해 (얇은 커널 계층을 통해) 제공됩니다.터미널 에뮬레이터, 예를 들어Xterm(작동X 윈도우 시스템),화면(프로그램과 다른 터미널 사이에 격리 계층을 제공합니다)SSH(한 기계의 터미널을 다른 기계의 프로그램에 연결하기 위해)예상되는(터미널 상호 작용 스크립트 작성에 사용) 등

터미널이라는 용어는 일반적으로 키보드와 모니터를 사용하여 사람들이 컴퓨터와 상호 작용하는 장치의 보다 전통적인 의미를 가질 수도 있습니다. 예를 들어, X 터미널은씬 클라이언트, 실제 응용 프로그램은 더 강력한 다른 컴퓨터에서 실행되는 동안 키보드, 모니터, 마우스 및 때로는 기타 인간 상호 작용 주변 장치를 구동하는 것이 유일한 목적인 특수 목적 컴퓨터입니다.

편안일반적으로 물리적 의미의 터미널은 어떤 정의에 따르면 기계에 직접 연결된 기본 터미널입니다. 콘솔은 운영 체제에 (커널 구현) tty로 나타납니다. Linux 및 FreeBSD와 같은 일부 시스템에서는 콘솔이 여러 개의 tty로 표시됩니다(이러한 tty 사이를 전환하기 위한 특수 키 조합 포함). 문제를 혼동하기 위해 각 특정 tty에 지정된 이름은 "콘솔", "가상 콘솔"일 수 있습니다. , "가상 터미널" 및 기타 변형.

당신은 또한 볼 수 있습니다가상 터미널이 "가상"인 이유는 무엇이며 "실제" 터미널은 무엇/왜/어디에 있습니까?.


껍데기사용자가 로그인할 때 보게 되는 기본 인터페이스이며, 주요 목적은 다른 프로그램을 실행하는 것입니다. (원래의 비유가 쉘이 사용자의 홈 환경이라는 것인지, 아니면 쉘이 다른 프로그램이 실행되는 곳인지는 모르겠습니다.)

유닉스 서클에서는껍데기구체적으로 지칭하는 것은명령줄 셸, 실행하려는 애플리케이션의 이름을 입력한 다음 애플리케이션이 작동해야 하는 파일 또는 기타 개체의 이름을 입력한 다음 키를 누르는 것을 중심으로 합니다 Enter. 다른 유형의 환경에서는 "쉘"이라는 단어를 사용하지 않습니다. 예를 들어 윈도우 시스템은 "창 관리자" 그리고"데스크탑 환경", "쉘"이 아닌.

유닉스 쉘에는 다양한 종류가 있습니다. 대화형 사용을 위해 널리 사용되는 셸은 다음과 같습니다.불다(대부분의 Linux 설치의 경우 기본값)지쉬(기능성과 사용자 정의 가능성 강조) 및물고기(단순함 강조).

명령줄 셸에는 명령 결합을 위한 흐름 제어 구조가 포함되어 있습니다. 대화형 프롬프트에서 명령을 입력하는 것 외에도 사용자는 스크립트를 작성할 수도 있습니다. 가장 일반적인 쉘에는 다음을 기반으로 하는 공통 구문이 있습니다.본 쉘. "를 논의할 때쉘 프로그래밍”, 쉘은 거의 항상 Bourne 스타일 쉘을 의미하지만 스크립팅에 자주 사용되지만 고급 대화형 기능이 부족한 일부 쉘은 다음과 같습니다.크쉬(크쉬)더 많은 것이 있습니다금연 건강 증진 협회변종. 거의 모든 Unix 계열 시스템에는 Bourne 스타일 쉘( /bin/sh보통 ash, ksh 또는 Bash)이 설치되어 있습니다.

Unix 시스템 관리에서 사용자의껍데기로그인 시 호출되는 프로그램입니다. 일반 사용자 계정에는 명령줄 셸이 있지만 액세스가 제한된 사용자에게는제한된 껍질또는 다른 특정 명령(예: 파일 전송 계정에만 해당)


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

  • 입력: 터미널은 키 입력을 제어 시퀀스(예: Left\e[D)로 변환합니다. 쉘은 제어 시퀀스를 명령(예: \e[Dbackward-char)으로 변환합니다.
  • 줄 편집, 입력 기록 및 완성 기능은 셸에서 제공됩니다.
    • 터미널은 자체 라인 편집, 기록 및 완성 기능을 제공할 수 있으며 실행할 준비가 되었을 때만 셸에 라인을 보냅니다. 이런 방식으로 작동하는 유일한 공통 터미널은 M-x shellEmacs입니다.
  • 출력: 쉘은 "display foo", "전경색을 녹색으로 전환", "커서를 다음 줄로 이동" 등과 같은 명령을 발행합니다. 터미널은 이 지침에 따라 작동합니다.
  • 프롬프트는 순전히 쉘 개념입니다.
  • 쉘은 자신이 실행하는 명령의 출력을 결코 볼 수 없습니다(리디렉션되지 않는 한). 출력 기록(롤백)은 순전히 터미널 개념입니다.
  • 애플리케이션 간 복사-붙여넣기는 터미널에서 제공됩니다(보통 마우스 또는 + Ctrl또는 + 와 같은 키 시퀀스 사용 ) . 셸에는 자체 내부 복사-붙여넣기 메커니즘(예: + 및 + )이 있을 수도 있습니다.ShiftVShiftInsertMetaWCtrlY
  • 직업 통제(백그라운드에서 프로그램을 시작하고 관리합니다.) 주로 쉘에 의해 실행됩니다. 그러나 터미널은 포그라운드 작업을 종료하는 +, 포 그라운드 작업을 일시 중지하는 Ctrl+ 와 같은 키 조합을 처리하는 역할을 담당합니다.CCtrlZ

답변2

단말기또는편안사용자가 호스트 컴퓨터와 상호 작용하는 데 사용할 수 있는 하드웨어입니다. 기본적으로 키보드와 텍스트 화면입니다.
오늘날 거의 모든 터미널과 콘솔은 "가상" 터미널과 콘솔을 나타냅니다.

터미널을 나타내는 파일은 전통적으로 다음과 같이 호출됩니다.단말기문서. UNIX 시스템의 "/dev" 디렉토리를 보면 많은 것을 찾을 수 있습니다.단말기가상 콘솔(예: Linux의 tty1), 가상 터미널(예: pts/0) 또는 물리적으로 연결된 하드웨어 부분(예: ttyS0은 첫 번째 직렬 포트에 연결된 물리적 직렬 터미널(사용 가능한 경우))에 연결합니다. 호스트)) 문서.

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

마지막으로 중요한 것은,껍데기을 통한 특별 프로그램입니다.제어 터미널그리고 사용자에게 다른 프로그램(예: bash, csh, tcsh)을 시작할 수 있는 방법을 제공합니다.

터미널 에뮬레이터물리적 터미널(예: xterm, gnome-terminal, minicom)을 시뮬레이션하는 프로그램입니다.

따라서 Linux 시스템(X11 아래)에서 "텍스트 창"을 보면 다음을 찾습니다.터미널 에뮬레이터, 에 연결됨가상 터미널, 로 식별됨단말기실행되는 파일껍데기.

답변3

간단한 설명:

콘솔은 터미널입니다. 시스템에는 콘솔과 여러 개의 터미널이 있을 수 있습니다. 콘솔은 일반적으로 컴퓨터가 부팅되는 동안 컴퓨터를 관리하기 위한 기본 인터페이스입니다.

터미널은 명령줄 프로그램에 대한 입력 및 출력을 수신하고 보낼 수 있는 세션입니다. 콘솔은 터미널의 특별한 경우입니다.

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

쉘은 프로그램을 제어하고 실행하는 데 사용되는 프로그램입니다. 일반적으로 터미널을 통해 대화형으로 사용됩니다. 많은 쉘 프로그램이 있으며 Bash는 틀림없이 오늘날 가장 일반적으로 사용되는 쉘입니다. 다른 셸(특정 순서 없음)에는 Bourne Shell, C-shell, Dash, Tsch, Ksh 및 점점 인기가 높아지는 zsh가 포함됩니다. 더있다.

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

답변4

이미 두 가지 좋은 답변이 있지만 문구에 대한 정보를 추가하고 싶었습니다."가상 터미널". 일반적으로 단말기의 외관/기능을 제공하는 것을 의미합니다. 이자.일반적으로. 하지만 리눅스 초창기(1994~95)에는 동의어로 사용됐다."가상 콘솔"(관련되지 않은 여러 사용자 인터페이스), 일부 개발자에 의해. 이 사용법은 문서에 여전히 존재합니다. tty1, tty2...를 지칭하는 데 두 가지 다른 용어가 사용되었습니다. 요즘(1996년 이후) "가상 터미널"은 다음을 의미할 수도 있습니다.터미널 에뮬레이터를 기반으로 합니다.

Linux vt(텍스트 모드 시스템 콘솔용 드라이버)는 커널의 첫 번째 부분입니다. 원래는 "가상 터미널"이라는 의미에서 메인프레임에 연결하는 데 사용되었으므로 이름이 붙여졌습니다. 가상 콘솔을 제어하는 ​​코드거주하다vt.c게다가. Linux 커널 엔지니어는 tty1, tty2...를 참조하기 위해 "콘솔"이라는 단어를 일관되게 사용하고 이를 참조하기 위해 "vc_" 접두사를 사용합니다. 예를 들어, 기능이 있습니다 vc_allocate. 반면, kbdWindows 및 Linux와 같은 사용자 공간 도구 개발자는 console-tools"가상 콘솔"(VC)과 "가상 터미널"(VT)을 같은 의미로 사용합니다. 이미 연락했어요안드리스 E. 브라우어초기 개발자(1994-95)가 사용하는 용어를 명확히 해달라고 요청했습니다. Andris는 친절하게 몇 가지 답변을 제공했습니다. 그는 VT와 VC가 동의어이며 "분리할 수 없는" 약어임을 지적했습니다.

일반적으로 가상 콘솔은 가상 터미널이지만 그 반대는 아닙니다. 가상 콘솔이 아닌 "가상 터미널"은 실제로의사 터미널(Andris가 말했듯이, 이것들은VT가 아님). 가상 콘솔과 달리 가상 콘솔의 커널은 콘솔 애플리케이션을 위한 터미널 기능, 의사 터미널 기능을 제공합니다.PTY "장치"를 사용하여 콘솔 응용 프로그램과 사용자 공간에서 실행되는 터미널 제작 프로그램 간의 통신을 조정합니다.. 예를 들어 sshd각 로그인 세션에 의사 장치를 할당하는 X 기반 터미널 에뮬레이터가 있습니다 . 의사 장치를 "콘솔"이라고 부르지 않을 수도 있습니다. 이는 실수입니다.

관련 정보