Bash, Zsh 및 기타 Linux 셸의 차이점은 무엇입니까?

0
1819

대부분의 Linux 배포판에는 기본적으로 bash 쉘이 포함되어 있지만 다른 쉘 환경으로 전환 할 수도 있습니다. Zsh는 특히 인기있는 대안이며, 재, 대시, 생선 및 tcsh와 같은 다른 껍질이 있습니다. 그러나 차이점은 무엇이며 왜 그렇게 많은가?

껍질은 무엇을 하는가?

Linux에서 명령 줄에 로그인하거나 터미널 창을 시작하면 시스템이 셸 프로그램을 시작합니다. 쉘은 명령 행 환경을 확장하는 표준 방법을 제공합니다. 원하는 경우 기본 쉘을 다른 쉘로 교체 할 수 있습니다.

첫 번째 셸 환경은 Bell Labs에서 개발되어 1971 년에 릴리스 된 Thompson Shell이었습니다. 셸 환경은 그 이후로 새로운 개념, 기능 및 속도 향상을 추가하여 개념을 기반으로하고 있습니다.

예를 들어, Bash는 명령 및 파일 이름 완성, 고급 스크립팅 기능, 명령 기록, 구성 가능한 색상, 명령 별명 및 첫 번째 쉘이 출시되었을 때 1971 년에 사용할 수 없었던 다양한 기타 기능을 제공합니다.

쉘은 또한 다양한 시스템 서비스에 의해 백그라운드에서 사용됩니다. Linux 배포에는 셸 스크립트로 작성된 많은 기능이 포함됩니다. 이 스크립트는 명령이며 쉘 환경을 통해 실행되는 기타 고급 쉘 스크립팅 기능입니다.

배쉬로 이어지는 포탄 : sh, csh, tsh, 및 ksh

관련 : 유닉스 란 무엇이며 왜 중요한가?

현대 쉘의 가장 유명한 조상은 “sh”라고도 알려진 Bourne 쉘이며 AT & T의 Bell Labs에서 일한 작성자 Stephen Bourne의 이름을 따서 명명되었습니다. 1979 년에 출시 된이 제품은 다른 기능과 함께 명령 대체, 파이핑, 변수, 조건 테스트 및 반복을 지원하기 때문에 Unix의 기본 명령 해석기가되었습니다. 사용자를 위해 많은 사용자 정의를 제공하지 않았으며 별칭, 명령 완료 및 쉘 기능과 같은 현대적인 기능을 지원하지 않았습니다 (이 마지막 기능은 결국 추가되었습니다).

C 쉘 또는 “csh”는 1970 년대 후반 버클리 캘리포니아 대학교의 Bill Joy가 개발했습니다. 별명 (긴 명령의 단축키), 작업 관리 기능, 명령 히스토리 등과 같이 사용자가 시스템을 제어 할 수있는 많은 대화식 요소가 추가되었습니다. 이 언어는 Unix 운영 체제 자체가 작성된 C 프로그래밍 언어로 모델링되었습니다. 또한 Bourne 쉘 사용자는 명령을 입력 할 수 있도록 C를 배워야했습니다. 또한 csh에는 사용자와 제작자가 오랜 기간 동안 모두 멸종해야 할 몇 가지 버그가있었습니다. 사람들은 비 대화식 명령을 더 잘 처리했지만 정상적으로 사용하기 위해 C 쉘을 고수했기 때문에 스크립트에 Bourne 쉘을 사용했습니다.

시간이 지남에 따라 많은 사람들이 버그를 수정하고 C 쉘에 기능을 추가하여 “tcsh”라는 향상된 csh 버전을 완성했습니다. 그러나 csh는 여전히 Unix 기반 컴퓨터의 기본값이며 일부 비표준 기능을 추가했습니다. LabBell Labs의 David Korn은 KornShell 또는“ksh”에서 일했으며 Bourne 쉘의 언어와 역 호환되지만 csh 쉘의 많은 기능을 추가하여 상황을 개선하려고했습니다. 1983 년에 출시되었지만 독점 라이센스하에 있습니다. 다양한 오픈 소스 라이센스로 배포 된 2000 년대까지는 무료 소프트웨어가 아니 었습니다.

강타의 탄생

POSIX (Portable Operating System Interface for Unix)는 바쁜 독점 csh 구현에 대한 또 다른 응답이었습니다. 명령 해석에 대한 표준을 성공적으로 만들었으며 결국 KornShell의 많은 기능을 반영했습니다. 동시에 GNU 프로젝트는 무료 Unix 호환 운영 체제를 만들려고했습니다. GNU 프로젝트는 자유 운영 체제의 일부가 될 자유 소프트웨어 셸을 개발하여 이름을 “Bourne Again Shell”또는 “bash”로 지정했습니다.

Bash는 1989 년 첫 릴리스 이후 수십 년 동안 개선되었지만 오늘날 대부분의 Linux 배포판에서 여전히 기본 쉘입니다. Apple macOS의 기본 쉘이기도하며 Microsoft Windows 10에 설치할 수 있습니다.

최신 포탄 : ash, dash, zsh 및 fish

이후 몇 년 동안 Linux 커뮤니티가 Bash에 정착했지만 Bash가 28 년 전에 처음 릴리스되었을 때 개발자는 새로운 쉘 생성을 중단하지 않았습니다.

Kenneth Almquist는 Almquish shell, A Shell, “ash”또는 때로는 “sh”로 알려진 Bourne 쉘 복제본을 만들었습니다. 또한 POSIX와 호환되었으며 BSD에서 Unix의 다른 브랜치 인 기본 쉘이되었습니다. 애쉬 쉘은 bash보다 가볍기 때문에 임베디드 Linux 시스템에서 인기가 있습니다. BusyBox가 설치된 루팅 된 Android 전화 또는 BusyBox 소프트웨어 제품군이있는 다른 장치가있는 경우 ash 코드를 사용하고 있습니다.

데비안은 재를 기반으로 쉘 환경을 개발했으며이를“대시”라고 불렀습니다. POSIX 호환 및 경량으로 설계되어 Bash보다 빠르지 만 모든 기능을 갖추고 있지는 않습니다. Ubuntu는 비 대화식 작업의 기본 셸로 대시 셸을 사용하여 셸 스크립트 및 백그라운드에서 실행되는 다른 작업의 속도를 높입니다. Ubuntu는 여전히 대화식 쉘에 bash를 사용하므로 사용자는 여전히 완전한 기능을 갖춘 대화식 환경을 보유하고 있습니다.

가장 인기있는 최신 셸 중 하나는 Z 셸 또는“zsh”입니다. 1990 년 Paul Falstad가 만든 zsh는 bash에서 찾을 수있는 기능과 그 밖의 기능을 포함하는 Bourne 스타일의 셸입니다. 예를 들어, zsh에는 맞춤법 검사, 로그인 / 로그 아웃 감시 기능, 바이트 코드와 같은 내장 프로그래밍 기능, 구문의 과학적 표기법 지원, 부동 소수점 산술 및 기타 기능이 있습니다.

또 다른 최신 셸은 2005 년에 출시 된 Friendly Interactive Shell 또는 “fish”입니다. 조금 더 배우기 쉽도록 설계되었지만 Bourne 셸 또는 C 셸에서 파생되지 않은 고유 한 명령 줄 구문이 있습니다. 흥미로운 생각이지만 물고기를 사용하여 배운 내용이 배쉬와 다른 본에서 얻은 껍질을 사용하는 데 반드시 도움이되는 것은 아닙니다.

어느 것을 선택해야합니까? (Zsh가 인기있는 이유)

껍질을 선택할 필요가 없습니다. 운영 체제는 기본 쉘을 선택하며 그 선택은 거의 항상 bash입니다. 리눅스 배포판이나 심지어는 맥 앞에 앉아도 거의 항상 bash 쉘 환경이있다. Bash는 상당히 많은 고급 기능을 가지고 있지만 쉘 스크립트를 프로그래밍하지 않으면 아마도 사용하지 않을 것입니다.

임베디드 Linux 시스템 또는 BSD 시스템에서는 애쉬 쉘이 생깁니다. 그러나 ash는 Bourne 기반 쉘이며 대부분 bash와 호환됩니다. bash를 사용하는 데 대한 모든 지식은 애쉬 또는 대시 셸을 사용하는 것으로 이전되지만이 가벼운 셸에서는 일부 고급 스크립팅 기능을 사용할 수 없습니다.

거의 모든 쉘은 Bourne 기반이며 zsh를 포함하여 비슷하게 작동합니다.

그래서 zsh가 인기가 있습니다. 이 최신 셸은 bash와 호환되지만 더 많은 기능이 포함되어 있습니다. zsh 셸은 기본 제공되는 맞춤법 수정, 향상된 명령 줄 완성, 셸의 플러그인 역할을하는로드 가능한 모듈, 명령 대신 파일 이름 또는 명령 줄의 다른 항목을 별칭으로 지정할 수있는 전역 별명 및 더 많은 테마 지원. bash와 비슷하지만 추가 기능, 추가 기능 및 구성 가능한 옵션이 많으므로 명령 줄에서 많은 시간을 보내면 감사 할 것입니다.

bash에 익숙하다면 다른 구문을 배우지 않고도 zsh로 전환 할 수 있습니다. 추가 기능 만 있으면됩니다. zsh에 익숙한 경우 다른 구문을 배우지 않고 bash로 전환 할 수 있습니다. 이러한 기능에 액세스 할 수는 없습니다.

“Oh My ZSH”는 zsh 플러그인을보다 쉽게 ​​활성화하고 사전 작성된 테마 간을 전환하여 시간을 조정하지 않고도 zsh 쉘을 신속하게 사용자 정의 할 수있는 도구입니다.

다른 껍질도 있습니다. 예를 들어, tcsh 쉘은 여전히 ​​존재하며 여전히 옵션입니다. FreeBSD는 기본 루트 쉘로 tsch를 사용하고 기본 대화식 쉘로 ash를 사용합니다. C 프로그래밍을 정기적으로 사용하는 경우 tsch가 더 적합 할 수 있습니다. 그러나 bash 또는 zsh만큼 일반적으로 사용되는 곳은 없습니다.

쉘 사이를 전환하는 방법

새로운 셸로 쉽게 전환 할 수 있습니다. Linux 배포판의 패키지 관리자에서 셸을 설치하고 명령을 입력하여 셸을 시작하십시오.

예를 들어 우분투에서 zsh를 사용 해보고 싶다고 가정 해보십시오. 다음 명령을 실행하여 설치 한 다음 시작하십시오.

sudo apt install zsh

zsh

그런 다음 zsh 셸에 앉아 있습니다. 유형” exit 쉘에서 그대로두고 현재 쉘로 돌아갑니다.

이것은 단지 일시적입니다. 새 터미널 창을 열거 나 명령 줄에서 시스템에 로그인 할 때마다 기본 쉘이 표시됩니다. 로그인 할 때 표시되는 쉘 (로그인 쉘이라고 함)을 변경하려면 일반적으로 chsh 또는 “Change Shell”명령을 사용하십시오.

이 명령을 사용하려면 먼저 which 명령을 사용하여 쉘의 전체 경로를 찾아야합니다. 예를 들어 zsh 셸로 변경하려고한다고 가정 해 보겠습니다. 다음 명령을 실행했습니다.

which zsh

우분투에서 이것은 zsh 바이너리가 / usr / bin / zsh에 저장되어 있음을 알려줍니다.

다음 명령을 실행하고 비밀번호를 입력하면 새 로그인 쉘을 선택하라는 메시지가 표시됩니다.

chsh

위의 명령에 따르면 /usr/bin/zsh . zsh 쉘은 우리가 실행할 때까지 기본값이됩니다. chsh 명령하고 다시 변경했습니다.