Bash, Zsh 및 다른 Linux 쉘의 차이점은 무엇입니까?
대부분의 Linux 배포판에는 기본적으로 bash 쉘이 포함되어 있지만 다른 쉘 환경으로 전환 할 수도 있습니다. Zsh는 특히 대중적인 대안이며, ash, dash, fish, tcsh와 같은 다른 쉘이 있습니다. 그러나 차이점은 무엇이며, 왜 그렇게 많은가??
쉘은 무엇을 하는가??
명령 줄에서 로그인하거나 Linux에서 터미널 창을 시작하면 시스템에서 셸 프로그램을 시작합니다. 셸은 명령 줄 환경을 확장하는 표준 방법을 제공합니다. 원하는 경우 기본 쉘을 다른 쉘로 바꿀 수 있습니다..
첫 번째 셸 환경은 Bell Labs에서 개발되어 1971 년에 발표 된 Thompson 셸이었습니다. 셸 환경은 그 이후로 다양한 새로운 기능, 기능 및 속도 향상 기능을 추가하여 개념을 구축해 왔습니다.
예를 들어 Bash는 명령 및 파일 이름 완성, 고급 스크립팅 기능, 명령 기록, 구성 가능한 색상, 명령 별명 및 첫 번째 셸이 출시 된 1971 년에는 다시 사용할 수 없었던 다양한 기능을 제공합니다.
쉘은 다양한 시스템 서비스에 의해 백그라운드에서 사용됩니다. Linux 배포판에는 쉘 스크립트로 작성된 많은 기능이 포함되어 있습니다. 이 스크립트는 쉘 환경을 통해 실행되는 명령 및 기타 고급 쉘 스크립팅 기능입니다..
배쉬까지 이어지는 쉘 : sh, csh, tsh, ksh
현대 껍질의 가장 유명한 조상은 "sh"라고도 알려진 Bourne 셸입니다.이 셸은 AT & T의 Bell Labs에서 근무한 Stephen Bourne의 이름을 따서 명명되었습니다. 1979 년에 출시 된이 프로그램은 명령 대체, 파이핑, 변수, 조건 테스트 및 루핑을 다른 기능과 함께 지원하므로 Unix에서 기본 명령 인터프리터가되었습니다. 사용자를 위해 커스터마이제이션을 많이 제공하지는 않았으며 별칭, 명령 완료 및 셸 기능과 같은 현대적인 기능을 지원하지 않았습니다 (이 마지막 기능은 결국 추가되었지만)..
C 쉘 ( "csh")은 1970 년대 말 버클리 대학의 Bill Joy가 개발했습니다. 별칭 (긴 명령에 대한 단축키), 작업 관리 기능, 명령 내역 등과 같이 사용자가 시스템을 제어 할 수있는 많은 상호 작용 요소를 추가했습니다. 이것은 유닉스 운영체제 자체가 작성한 C 프로그래밍 언어로 모델링되었다. 이것은 Bourne 쉘 사용자가 C 언어를 사용하여 명령을 입력 할 수 있어야한다는 것을 의미한다. 또한 csh에는 많은 시간 동안 사용자와 제작자가 모두 해킹해야했던 버그가있었습니다. 비 대화식 명령을 더 잘 처리했기 때문에 사람이 Bourne 셸을 스크립트로 사용하는 것을 끝내지 만 정상적인 사용을 위해 C 셸을 사용했습니다..
시간이 지남에 따라 많은 사람들이 버그를 수정하고 C 셸에 기능을 추가하여 "tcsh"라는 csh의 개선 된 버전을 완성했습니다. 그러나 csh는 여전히 유닉스 기반 컴퓨터의 기본이며, 비표준 기능을 추가했다. Bell Labs의 David Korn은 Bourne 쉘 언어와 역 호환되지만 csh 쉘에서 많은 기능을 추가하여 상황을 개선하려고 시도한 KornShell 또는 "ksh"에 대해 작업했습니다. 이 제품은 1983 년에 발표되었지만 독점 라이센스가 적용되었습니다. 다양한 오픈 소스 라이선스로 배포 된 2000 년대까지는 자유 소프트웨어가 아니 었습니다..
배시 탄생
유닉스 (POSIX)를위한 포터블 운영체제 인터페이스는 대단히 독점적 인 csh 구현에 대한 또 다른 응답이었다. 그것은 명령 해석을위한 표준을 성공적으로 만들어 냈고 (결국) KornShell에 많은 기능을 반영했습니다. 동시에, GNU 프로젝트는 유닉스와 호환되는 무료 운영체제를 만들려고 시도하고있었습니다. GNU 프로젝트는 무료 운영 체제의 일부인 무료 소프트웨어 셸을 개발하여 "Bourne Again Shell"또는 "bash"라고 명명했습니다..
Bash는 1989 년 첫 릴리스 이후 수십 년 동안 개선되었지만 오늘날 대부분의 Linux 배포판에서는 여전히 기본 셸입니다. 또한 Apple macOS의 기본 셸이며 Microsoft Windows 10에 설치할 수 있습니다..
최신 쉘 : 화산재, 돌진, zsh 및 물고기
그 이후 리눅스 공동체가 Bash에 정착 해 왔지만 개발자들은 Bash가 28 년 전에 처음 출시되었을 때 새로운 쉘을 만드는 것을 멈추지 않았습니다..
Kenneth Almquist는 Almquish shell, A shell, "ash"또는 때때로 "sh"로 알려진 Bourne shell clone을 만들었습니다. 그것은 또한 POSIX 호환이었고 유닉스의 다른 계열 인 BSD의 기본 쉘이되었습니다. ash 셸은 bash보다 가볍기 때문에 임베디드 리눅스 시스템에서 널리 사용됩니다. BusyBox가 설치된 루팅 된 Android 휴대 전화 또는 BusyBox 소프트웨어 세트가있는 다른 기기 인 경우 애쉬의 코드를 사용하고 있습니다..
데비안은 화산재를 기반으로 한 셸 환경을 개발하여 "대시 (dash)"라고 불렀습니다. POSIX 호환 및 경량으로 설계되었으므로 Bash보다 빠르지 만 모든 기능을 갖춘 것은 아닙니다. 우분투는 대시 셸을 비대화 형 작업의 기본 셸로 사용하여 셸 스크립트 및 백그라운드에서 실행되는 다른 작업의 속도를 높입니다. Ubuntu는 여전히 대화 형 셸에 bash를 사용하므로 사용자는 여전히 완전한 기능을 갖춘 대화 형 환경을 갖추고 있습니다..
가장 인기있는 최신 셸 중 하나가 Z 셸 또는 "zsh"입니다. 1990 년 Paul Falstad가 만든 zsh는 Bash에서 찾을 수있는 기능을 포함하는 Bourne 스타일의 쉘이며, 더 많은 기능을 제공합니다. 예를 들어, zsh에는 맞춤법 검사, 로그인 / 로그 아웃 기능, 바이트 코드와 같은 내장 프로그래밍 기능, 구문 표기법 지원, 부동 소수점 연산 및 기타 기능이 있습니다.
더 새로운 또 하나의 쉘은 친숙한 대화식 쉘 또는 2005 년에 발표 된 "fish"입니다.이 쉘은 배우기가 조금 쉬워 지도록 설계된 고유 한 명령 행 구문을 가지고 있지만 Bourne 쉘 또는 C 쉘에서 파생되지 않았습니다. 흥미로운 아이디어이지만, 물고기를 사용하여 배워야 할 것은 bash 및 기타 Bourne 파생 쉘을 사용하는 데 반드시 도움이되지는 않습니다..
어느 것을 선택해야합니까? (그리고 Zsh가 인기있는 이유)
셸을 선택할 필요가 없습니다. 운영 체제가 기본 쉘을 선택하기 때문에 선택은 거의 항상 bash입니다. Linux 배포판 또는 심지어 Mac에도 앉아서 거의 항상 bash 쉘 환경을 갖습니다. Bash는 꽤 많은 고급 기능을 가지고 있습니다 만, 쉘 스크립트를 프로그램하지 않으면 아마 사용하지 않을 것입니다.
임베디드 리눅스 시스템이나 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 쉘에 앉아있을 것입니다. 유형 " 출구
"쉘을 떠나서 현재 쉘로 돌아가려면.
이것은 단지 일시적인 것입니다. 명령 줄에서 새 터미널 창을 열거 나 시스템에 로그인 할 때마다 기본 셸이 표시됩니다. 로그인 할 때 표시되는 쉘 (로그인 쉘이라고 함)을 변경하려면 일반적으로 chsh
, 또는 "셸 변경"명령.
이 명령을 사용하려면 먼저 which 명령으로 쉘의 전체 경로를 찾아야합니다. 예를 들어, zsh 쉘로 변경하려고한다고 가정 해 봅시다. 다음 명령을 실행합니다.
어느 zsh
우분투에서는 zsh 바이너리가 / usr / bin / zsh에 저장되어 있다고 알려줍니다..
다음 명령을 실행하고 비밀번호를 입력하면 새 로그인 쉘을 선택하라는 메시지가 나타납니다.
chsh
위의 명령에 따르면, 우리는 / usr / bin / zsh
. zsh 쉘은 우리가 실행하기 전까지는 디폴트가 될 것입니다. chsh
명령을 변경하고 다시 변경했습니다..