본 셸은 Bash만큼 널리 사용되지는 않지만 최신 Linux 시스템에서 여전히 사용되고 있는 가장 오래된 셸 중 하나입니다. Linux에서 본 셸에 대해 알아야 할 사항은 다음과 같습니다.
본 셸이란 무엇인가요?
“sh”로 줄여서 부르는 본 셸은 영국의 컴퓨터 과학자 스티븐 R. 본의 이름을 딴 것으로, 벨 연구소에서 근무할 때 개발했습니다. 이 셸은 유닉스의 최초 개발자 중 한 명인 켄 톰슨이 작성한 초기의 톰슨 셸을 대체했습니다.
본 셸은 버전 7 유닉스에서 처음 등장했으며 흐름 제어, 변수, 향상된 문자열 처리와 같은 기능을 갖추고 있었습니다. 이러한 기능 덕분에 셸을 단순히 다른 프로그램을 호출하는 방법이 아닌 프로그래밍 언어로 사용하기가 쉬워졌습니다.
본 셸은 유닉스 시스템에서 휴대용 스크립트를 작성하는 데 여전히 널리 사용되었지만, 대화형 용도로는 C 셸, KornShell, Bash라고도 알려진 본 어게인 셸 및 Z 셸로 대체되었습니다. 이러한 셸은 명령 기록 및 명령줄 편집과 같은 기능을 제공하여 사용자와 관리자의 작업을 더 쉽게 만들었습니다.
KornShell, Bash 및 Z 셸(나중에 다룸)은 본 셸의 영향을 받은 구문을 가지고 있습니다.
Perl 및 Python과 같이 훨씬 더 고급 기능을 갖춘 강력한 크로스 플랫폼 스크립팅 언어도 셸 스크립팅을 상당 부분 대체했습니다.
여전히 본 셸은 널리 알려져 있으며 Linux 프로그램과 함께 제공되는 많은 스크립트에서 다양한 작업에 본 셸의 구문을 사용합니다.
본 셸의 동작은 POSIX 표준으로 코드화되었으므로 많은 최신 유닉스 계열 시스템에서 호환되는 셸을 사용하여 어떤 방식으로든 구현합니다.
최신 본 셸 대안
Linux 시스템에는 원래의 본 셸을 대체하는 여러 가지 오픈 소스 최신 대안이 있습니다. 다음은 가장 잘 알려진 몇 가지입니다:
본 어게인 셸(Bash)
본 어게인 셸(Bash) 이라는 이름은 본 셸의 플레이입니다. 이 셸은 원래 GNU 시스템의 구성 요소로 개발되어 몇 년 동안 Linux보다 먼저 사용되었습니다.
원래 본 셸용으로 작성된 스크립트와 대부분 호환됩니다. 또한 KornShell이 개척한 명령줄 편집과 같은 기능을 통합했습니다.
Bash는 많은 Linux 배포판의 기본 셸이므로 그 자체로 사실상의 표준이 되었습니다.
KornShell
KornShell ksh라고도 하는 이 셸은 원래 1980년대에 벨 연구소의 데이비드 콘이 개발했습니다. 본 셸을 기반으로 구축된 KornShell은 작업 제어, 배열 및 명령줄 편집과 같은 몇 가지 추가 기능을 도입했습니다. 후자는 C 셸의 히스토리 메커니즘을 사용하는 것보다 훨씬 쉬웠기 때문에 처음 등장했을 때 혁신적인 기능이었습니다.
이전에 실행한 명령을 다시 편집해야 하는 경우 Vi 또는 Emacs와 유사한 명령을 사용하여 수행할 수 있었습니다.
KornShell은 오라클 솔라리스와 같은 일부 상용 Linux 시스템에서 기본값이었습니다. 원래 KornShell은 AT&T에서 독점 라이선스로 처음에 출시되었기 때문에 결국 pdksh라는 오픈 소스 버전이 출시되었습니다.
Almquist/Debian Almquist Shell
Almquist 셸은 원래 Kenneth Almquist에 의해 작성되었으며 본 셸을 가볍게 대체하기 위해 고안되었습니다. 많은 BSD 시스템에서 이 셸을 sh의 구현으로 포함하고 있습니다.
1990년대에 데비안으로 포팅된 버전은 데비안 알퀴스트 셸로 알려져 있습니다. 이름에서 알 수 있듯이 데비안과 우분투 시스템에서 sh를 구현한 것입니다.
Z 셸
Z 셸 , 또는 zsh는 1990년 폴 팔스테드가 처음 개발한 최신 셸 중 하나입니다. Z 셸은 고급 기능으로 잘 알려져 있습니다. 좋은 예로 재귀적 글로빙 또는 하위 디렉터리에서 와일드카드를 일치시키는 기능을 들 수 있습니다.
Z 셸은 macOS 및 Kali Linux의 기본 로그인 셸입니다.
본 셸 호환성
이러한 셸은 원래 본 셸용으로 작성된 스크립트와 대부분 호환되지만, 원래 셸과 더 비슷하게 동작하도록 변경할 수 있는 방법이 있습니다.
이를 수행하는 주요 방법은 심볼릭 링크를 사용하는 것입니다. 대부분의 시스템은 /bin/sh를 Bash 또는 다른 셸에 심볼릭 링크합니다. 이 방법으로 호출하면 셸이 본 셸과 호환 모드로 전환됩니다.
ls 명령으로 어떤 셸 /bin/sh가 연결되어 있는지 확인할 수 있습니다:
ls -l /bin/sh
이제 본 셸에 대해 알았습니다
본 셸은 유닉스 계열 시스템에서 스크립팅을 위한 가장 오래된 표준 중 하나입니다. 다른 셸로 대체되었더라도 다른 사람이 작성한 스크립트를 실행하는 데는 여전히 중요합니다.
Bash는 코딩, 특히 변수에 대한 접근 방식에서 최고의 본 파생 언어 중 하나입니다. 다음 프로젝트에 고려해 볼 만한 몇 가지 독특한 변수가 있습니다.