📖 셸(Shell)의 정의

  • 셸은 사용자와 커널 간의 소통을 원활하게 해주는 소프트웨어입니다.

  • 사용자가 터미널에서 작성한 명령어를 해석하여 커널에 직접 전달해서 컴퓨터를 빠르고 강력하게 제어할 수 있습니다.

  • 스택 오버플로우에서 조사한 사용률 상위 프로그래밍 언어 중 6위를 차지한 배시로 셸의 일종입니다. 셸을 잘 이용하면 작업 효율이 높아지기 때문에 개발자가 되기 위해서는 셸을 꼭 알아야 합니다.



📖 셸의 종류

📌 터미널

  • 최초의 터미널은 유닉스 기반의 컴퓨터를 제어하는 하드웨어 단말기를 의미했습니다.

  • 주로 전신 타자기를 이용했기 때문에 TIY라고도 불렸으나 현재는 기술이 발달하여 소프트웨어로 완전히 대체되었습니다.

  • 터미널의 목적은 컴퓨터가 실행한 결과를 그대로 출력해주는 것입니다. 맥의 터미널, 윈도우의 명령 프롬포트가 대표적인 예입니다. 터미널은 다양한 의미로 통용되는 단어이지만 여기서는 프로그램을 일컫는 용어로 사용하겠습니다.


📌 파워셸

  • 마이크로소프트사에서 만든 파워셸은 윈도우에서 실행되는 셸로 기존 CMD의 확장형이라고 볼 수 있습니다.

  • 기존 CMD와 다르게 크로스 플랫폼과 오픈 소스를 지향하기 시작하면서 리눅스, 맥 등등 다양한 OS에서 사용할 수 있습니다. 또한 여러 리눅스 명령어를 지원하여 파워셸을 처음 사용하는 개발자들도 쉽게 적응할 수 있습니다.


📌 CLI

  • CLI는 사용자가 입력할 수 있는 인터페이스로 터미널과 혼용되어 쓰입니다.

  • 입력된 명령어를 해석해 주는 소프트웨어를 셸이라고 합니다. CLI에서 명령어의 입력과 출력은 모두 문자열로만 이루어집니다. 따라서 Charter User Interface라고 불리기도 합니다.

  • GUI가 상용화된 현재 CLI는 불편한 환경으로 여겨지고 있지만, 화려한 UI에 비해 자원이 훨씬 적게 필요해 서비스에 온전히 집중할 수 있습니다. 이 때문에 고성능을 요구하는 서버용 컴퓨터에 많이 쓰입니다. 또한 Git, node, vue와 같은 서비스를 잘 활용하기 위해서는 CLI 지식이 필수적입니다.



📖셸은 어디서 접하게 될까?

  • 윈도우의 파일탐색기, 맥의 Finder는 대표적인 CUI 셸입니다. 기존에 터미널에서 명령어를 통해 수행하던 동작을 아이콘으로 옮기는 것으로 수행할 수 있어 사용자 친화적입니다. 또한 파일탐색기, Finder에서 하는 작업을 터미널에서 완전히 동일하게 수행할 수 있습니다.

  • 전 세계에서 가장 유명한 버전 관리 소프트웨어인 Git을 설치하면 Git Bash가 설치됩니다. 이때 Bash가 바로 셸입니다 윈도우, 맥, 리눅스 등등 어떤 운영체제에 설치해도 같은 명령어로 Git을 사용할 수 있습니다.

  • 우리가 자주 이용하는 vs code는 현재 가장 인기 있는 텍스트 에디터 중 하나입니다. VSC에서는 기본적으로 터미널이 내장되어 있습니다. 해당 터미널로 개발에 필요한 여러 셸 명령을 수행할 수 있습니다.



📖 셸 알아보기

📌 본 셸

  • 1977년 AT&T의 연구소에서 근무하던 스티브 본이 만들어 유닉스 V7에 처음 탑재되었습니다. 사용자와 유닉스의 소통 창구 역할을 했지만 아쉬운 점이 존재했으며, 이후 만들어진 많은 셸의 기반이 되었습니다.

📌 C 셸

  • C 셸은 1978년 윌리엄 넬슨 조이가 개발했으며 History, Alias 같은 편의 기능을 사용할 수 있습니다. 셸 스크립트 구문 형식이 C 언어의 전신을 두고 있어 C 셸이라고 불리게 되었습니다.

📌 본 어게인 셸

  • 본 어게인 셸은 1988년 브라이언 폭스가 개발했습니다. 본 셸을 대체하는 자유 소프트웨어로 GNU 프로젝트를 위해 만들어졌습니다. 이후 리눅스, 맥 등등 다양한 운영체제의 기본 셸로 탑재되어 현재까지 가장 많이 사용되고 있습니다.

📌 Z 셸

  • Z 셸은 1990년 폴 팔스타드가 개발했으며 본 셸 기반으로 배시와 호환됩니다. 가볍고 빠르지만 예쁘지 않고, 별다른 기능이 없는 배시의 단점을 보완했습니다. 이후 맥은 카날리나 OS부터 기본 셸을 배시에서 Z 셸로 변경했습니다.
profile
나 혼자 보려고 만든 개발 일기

0개의 댓글