셸(Shell)의 종류와 /bin디렉토리

피오·2022년 1월 9일
0

셸이란?

셸이란 일종의 명령어 처리기로서 커널과 사용자를 이어주는 역할을 한다.

셸의 종류

  1. Bourne Shell(sh)
    최초의 셸. 대부분 리눅스에 기본적으로 설치되어 있으며 설치 위치는 /bin/sh

  2. C Shell(csh)
    sh의 사용성을 강화한 버전이다. C언어를 기반으로 만들어졌으며 설치 위치는 /bin/csh

  3. tee-see-Shell(tcsh)
    카네기 멜런 대학교 학생들이 개발한 셸로서 C Shell에서 명령 행 완성과 명령 행 편집 기능을 추가한 것. 설치 위치는 /bin/tcsh

  4. Z Shell (zsh)
    1990년대에 만들어졌으며 역시 대학생이 만들었다. 앞서 만들어진 셸들의 많은 기능을 담고 있기 때문에 많은 개선사항을 거친 확장형 버전이라 할 수 있다. 설치 위치는 /bin/zsh

  5. Bourn-again shell (bash)
    GNU프로젝트를 위해 만들어진 셸. GNU 운영체제와 리눅스, 맥 OS의 기본 셸이었으나 카날리나 버전 이후로 기본 셸이 zsh로 변경되었다.

bin디렉토리

셸 종류를 조사해보니 셸들이 모두 /bin디렉토리에 설치되는 것을 알 수 있었다. 문득 셸 스크립트의 첫 줄에도 작성했던 이 /bin 디렉토리가 대체 어떤 역할을 하는 것인지 궁금해졌다.

/bin : binaries

시스템에서 가장 필수적인 실행파일들을(cat, echo 등) 모아둔 디렉토리로서, 리눅스의 기본 명령어(binary)들이 들어있다. 즉 커맨드 라인에 echo, pwd와 /bin/echo, /bin/pwd를 입력하면 동일한 결과를 출력한다.

별 생각없이 명령어를 입력하던 게 이진수로 작성된 파일을 실행시키는 행위였음을 알게 됐다.

셸스크립트 #!/bin/bash의 의미

해당 파일을 bash 셸로 실행시키겠다는 의미라고 한다. 터미널에 /bin/bash를 입력하니까 셸이 bash셸로 바뀌는 것을 보니, bash셸 로 해당 스크립트 문장들을 수행한다는 말이 조-금 와닿았다.

그리고 이전에 셸 스크립트 강의를 수강한 적이 있었는데, 강의에서는 bash셸을 기준으로 명령어를 가르쳐주었으나 내 맥북의 기본 셸이 zsh이다보니 몇몇 명령어를 직접 타이핑할 시 작동하지 않던 게 있었다.

찾아보니 셸마다 문법이 조금씩 다르기 때문이라고 하는데, 그 당시 실행 안되던 명령어들을 셸 스크립트 파일로 만들어 상단에 #!/bin/bash를 선언한 후 파일로 실행했다면 정상적으로 동작했을 것 같다.

추가 학습 목표

텍스트 파일과 바이너리 파일의 차이


참고

profile
블로그 이전했습니다. https://pzbg.tistory.com/

0개의 댓글