쉘과 터미널

김명주·2024년 12월 23일
0

터미널이란?

  • 설명
    • 사용자와 운영체제 사이에서 명령어를 입력하고 결과물을 출력해주는 응용프로그램
    • 과거에는 하드웨어로 존재했지만 오늘날에는 주로 응용프로그램으로써 동작하고 있다.
    • OS 위에 설치된 응용프로그램 혹은 Remote 환경에 설치된 응용프로그램으로써 주로 사용된다
    • 서버관리나 개발작업을 위해서는 빠르고 가볍게 시스템을 제어하기 위해 CLI(Command Line Interface)기반으로 제어를 하는 편
    • iTerm2, Windows Terminal, gnome-terminal이 대표적

쉘(Shell) 이란?

  • 설명

    • 사용자가 입력한 명령어를 해석해 운영체제에 전달하는 프로그램
    • 터미널은 주로 쉘을 실행하는 환경으로 사용됨
  • 역할

    • 명령어를 해석하여 하드웨어에 전달하고 결과를 받아서 사용자에게 반환
    • 프로그래밍 언어처럼 사용할 수 있어 스크립트 작성이나 자동화 작업에 사용할 수 있다.
  • 예시

    • sh: 가장 기본적인 유닉스 계열 쉘
    • bash: 확장 기능(자동완성, 히스토리, 배열, if문, 조건문, 함수 등)이 포함된 쉘로, 리눅스 배포판의 기본 쉘
    • zsh: bash와 csh의 기능을 결합하고 확장한 쉘. 각종 플러그인과 테마를 적용할 수 있는 더욱 확장된 쉘.

    리눅스에서 기능이 더 많은 zsh를 표준으로 사용하지 않는 이유는?

    • bash는 POSIX 표준을 준수하면서 확장된 기능 제공
    • zsh는 표준과 다르게 자체적인 변수, 배열 처리 및 추가 내장 명령어가 포함되어 있다.
    • 그 외에도 zsh는 확장 기능들의 의존성으로 인해 다소 무거워 표준으로 채택되기에는 어렵다

POSIX 표준

정의

  • 운영체제와 Application 사이에는 Library 또는 API를 통해서 소통을 하게 된다. 또한 Library 또는 API에서 운영체제 커널의 기능을 사용하고 동작하게 하려면, 운영체제가 제공하는 System Call을 호출하고, 그 결과를 Application으로 반환받아야 한다.
    이 System Call을 규정하고, 커널(kernel)의 필수 요건들을 구성하는 것이 POSIX이다.

설명

Unix를 기반으로 만든 수많은 리눅스 기반 운영체제들의 단일 포괄적 표준을 만들기 위한 목적으로 제작된 표준

  • 파일 시스템이 POSIX와 호환되려면 아래와 같은 조건을 충족해야 한다
    • 강력한 일관성 제공
    • atomic writes -> write는 원자적으로 실행되어야 한다. 즉, write 작업이 완전히 처리되거나 전혀 실행되지 않아야 한다
    • 권한(permissions)을 사용하여 파일에 대한 access를 제어하고, chmod, chown 등을 이용하여 권한을 수정한다
    • random read, write, truncate(자르기) 또는 fsync*와 같은 특정 작업들을 구현해야 한다.
profile
개발자를 향해 달리는 사람

0개의 댓글