셸은 사용자와 커널 간의 소통을 원활하게 해주는 소프트웨어입니다.
사용자가 터미널에서 작성한 명령어를 해석하여 커널에 직접 전달해서 컴퓨터를 빠르고 강력하게 제어할 수 있습니다.
스택 오버플로우에서 조사한 사용률 상위 프로그래밍 언어 중 6위를 차지한 배시로 셸의 일종입니다. 셸을 잘 이용하면 작업 효율이 높아지기 때문에 개발자가 되기 위해서는 셸을 꼭 알아야 합니다.
최초의 터미널은 유닉스 기반의 컴퓨터를 제어하는 하드웨어 단말기를 의미했습니다.
주로 전신 타자기를 이용했기 때문에 TIY라고도 불렸으나 현재는 기술이 발달하여 소프트웨어로 완전히 대체되었습니다.
터미널의 목적은 컴퓨터가 실행한 결과를 그대로 출력해주는 것입니다. 맥의 터미널, 윈도우의 명령 프롬포트가 대표적인 예입니다. 터미널은 다양한 의미로 통용되는 단어이지만 여기서는 프로그램을 일컫는 용어로 사용하겠습니다.
마이크로소프트사에서 만든 파워셸은 윈도우에서 실행되는 셸로 기존 CMD의 확장형이라고 볼 수 있습니다.
기존 CMD와 다르게 크로스 플랫폼과 오픈 소스를 지향하기 시작하면서 리눅스, 맥 등등 다양한 OS에서 사용할 수 있습니다. 또한 여러 리눅스 명령어를 지원하여 파워셸을 처음 사용하는 개발자들도 쉽게 적응할 수 있습니다.
CLI는 사용자가 입력할 수 있는 인터페이스로 터미널과 혼용되어 쓰입니다.
입력된 명령어를 해석해 주는 소프트웨어를 셸이라고 합니다. CLI에서 명령어의 입력과 출력은 모두 문자열로만 이루어집니다. 따라서 Charter User Interface라고 불리기도 합니다.
GUI가 상용화된 현재 CLI는 불편한 환경으로 여겨지고 있지만, 화려한 UI에 비해 자원이 훨씬 적게 필요해 서비스에 온전히 집중할 수 있습니다. 이 때문에 고성능을 요구하는 서버용 컴퓨터에 많이 쓰입니다. 또한 Git, node, vue와 같은 서비스를 잘 활용하기 위해서는 CLI 지식이 필수적입니다.
윈도우의 파일탐색기, 맥의 Finder는 대표적인 CUI 셸입니다. 기존에 터미널에서 명령어를 통해 수행하던 동작을 아이콘으로 옮기는 것으로 수행할 수 있어 사용자 친화적입니다. 또한 파일탐색기, Finder에서 하는 작업을 터미널에서 완전히 동일하게 수행할 수 있습니다.
전 세계에서 가장 유명한 버전 관리 소프트웨어인 Git을 설치하면 Git Bash가 설치됩니다. 이때 Bash가 바로 셸입니다 윈도우, 맥, 리눅스 등등 어떤 운영체제에 설치해도 같은 명령어로 Git을 사용할 수 있습니다.
우리가 자주 이용하는 vs code는 현재 가장 인기 있는 텍스트 에디터 중 하나입니다. VSC에서는 기본적으로 터미널이 내장되어 있습니다. 해당 터미널로 개발에 필요한 여러 셸 명령을 수행할 수 있습니다.