답변:
나는 이것에 대해 약간의 독서를했고 결론은 GNU 의 기본 쉘 (대부분의 Linux 기반 OS에서 사용됨)이므로 20 년의 개발 기간 동안 GNU의 일부로 패키지로 제공됩니다. 안정적이고 둥글게 처리 된이 제품은 가장 우수하며 가장 고급 인 사용자를 제외한 모든 사용자의 요구를 충족시킵니다.
자세한 내용 은 Linux에서 왜 bash 표준입니까?를 읽으십시오 . (유닉스와 리눅스에서 같은 질문).
이것에 조금 더 추가하기 위해 시도해야 할 다른 쉘이 많이 있습니다. 관심이 있으시면 이 답변 의 일부가 있습니다 .
Zsh 는 고급 대화식 기능을 갖추고 있지만 스크립팅과 관련하여 몇 가지 단점이 있습니다 (현재는 과거에 비해). 리눅스가 초기 단계였던 1990 년대 초 중반에서 zsh는 거의 알려지지 않았습니다.
Ksh 는 1980 년대 중반 이래로 상업 유니스 에 대한 사실상의 표준 이었지만 2000 년까지는 독점 소프트웨어 였으므로 Linux에서는 옵션이 아니 었습니다. 또한 ksh에는 bash와 비교하여 하위 명령 줄 편집 기능이 있습니다.
ksh의 무료 복제 본인 Pdksh 는 옵션 이었지만 잘 알려지지 않았으며 명령 행 버전 기능이 좋지 않았습니다. (Pdksh는 일부 BSD에서 여전히 사용되고 있지만 ATT ksh는 무료이므로 더 이상 매우 활발한 프로젝트가 아닙니다.)
일부 배포판은으로 재 변형을 설치합니다
/bin/sh
. Ash (애쉬라고하는 느슨한 셸 패밀리를 의미 함)는 대화식 기능이없는 작고 빠르도록 설계되었습니다 (스크립트 편집 전용). 재의 부흥은 비교적 최근입니다. 1990 년대에 기존 변형에는 많은 기능이 없었습니다.Tcsh 는 zsh가 등장 할 때까지 가장 진보 된 대화식 쉘 이었지만 sh와 호환되지 않으며 스크립팅에는 적합하지 않습니다 .
Bourne 쉘 ( 쉬 유닉스의 AT & T 지점의 날 다시는)에 따라 개선 및 Korn 쉘,로 대체되었다 KSH . ksh는 AT & T Bell Labs에서 나 왔으며 GPL이 아닙니다 (현재 버전은 Eclipse Public License). C-shell, csh 는 Berkeley 버전의 Unix에서 나오며 GPL (BSD 라이센스)이 아니며 sh와 다른 구문을 사용했습니다. Z-shell zsh 는 sh에서 개선되었지만 GPL (MIT와 유사한 라이센스)은 아닙니다. Bash는 sh에서 개선되었으며 GPL과 GNU에서 사용되었습니다. 라이센스만으로도 Bash는 아마도 GPL 운영 체제에서 선택되었을 것입니다. 특히 쉘이 배포판의 핵심 부분입니다.
그러나 Bash는 또한 GNU 프로젝트 였기 때문에 버클리 유닉스 나 AT & T 유닉스의 레거시 제품보다 더 적극적으로 개발하고 기여할 수 있다고 생각합니다. zsh가 Bash보다 더 나은 쉘이었고 매우 라이센스가 높았지만 라이센스와 GNU 이외의 프로젝트 상태를 극복하기에는 충분하지 않습니다.
Linux 배포판이 처음 나타나고 기본 셸 (90 년대 중반 ~ 초반)을 선택했을 때 github (2008) 또는 SourceForge (1999)는 없었습니다. 그 시점에서 GNU 프로젝트는 GNU 개발자가 아닌 새로운 프로젝트에 비해 주목을 받고 그림을 그리고 새로운 개발자를 포함시키는 것보다 실질적인 이점이 있다고 생각합니다. 따라서 배포판은 Z-shell을 더 잘 볼 수 있지만 Bash는 앞으로 좋은 지원 및 유지 보수를 받고 더 많은 기능을 추가하여 zsh를 따라 잡을 수있을 것으로 기대합니다.
Bash는 수년간의 기본 지위를 가지게되었으므로 사실상 책이 쓰여진 사실상의 표준이되었습니다. Bash와 Z-shell을 모두 다루는 책이 있지만 Bash를 다루는 책 은 여러 권 있지만 독점적으로 다루는 책은 없습니다.
그리고이 시점에서 배포판이 기존 시스템의 업그레이드에 대한 기본값을 변경하면 일부 초기화 파일의 이름이 다르고 (예 : .bashrc와 .zshrc) 파일의 내용이 호환되지 않는 구문으로 설정이 중단 될 수 있습니다. 따라서 새로운 다운로드는 zsh를 기본값으로 사용하고 업그레이드는 bash를 사용하도록 남겨 두는 것을 꺼려합니다. 같은 배포판에 대한 두 가지 다른 기본값은 아마도 지원하지 않아도되고 사용자 / 회사도 다루고 싶지 않은 것입니다.
유닉스 쉘 언어는 모두 추악합니다. 특히 ( csh
), 일부는 조금 적을 수도 ksh
있지만 (실제로 알지 못하지만) 실제로 큰 프로젝트의 가독성 및 강성과 같은 측면에서는 아무도 잘 설계된 범용 언어에 접근 할 수 없습니다. Python, C # 또는 Haskell. 따라서 단단한 것을 원할 때 쉘 풍미를 전혀 선택하지 않을 것입니다.
간단한 일을 빨리 끝내고 싶을 때 선택하십시오. 이를 위해서는 다음이 필요합니다.
sh
호환성은 여기에 큰 장점이며 다시 한 번 더 인기가 좋습니다.따라서 쉘 언어에서는 일반 언어보다 인기가 더 큽니다. 따라서 ksh
언어 자체가 조금 더“더 나은” 경우에도 bash
, 좀 더 대중적 일 경우 (해당 부분이 처음으로 기본 언어로 선택된 이후 로) 해당 언어를 사용하는 데있어 그다지 많은 광고가 없습니다. GNU의 경우).
스위치를 만드는 사람들은 고의적으로 그것에 대해 생각하고 좋아하는 쉘로의 전환을 쉽게 처리 할 수있었습니다. 덜 인기있는 쉘로 작업 해야하는 신인 OTOH는 인터넷에 무언가를 요청하면 작동하지 않으면 빨리 혼란 스러울 것입니다. 따라서 유닉스 참전 용사를 목표로하는 모든 배포판 bash
은 표준 이외 의 다른 것을 만들면 상당히 위험을 감수합니다 .
"Critical Mass"는 IMO의 주요 답변입니다. Bash는 명령 줄 작업뿐만 아니라 스크립팅을위한 것이며, 수많은 Bash 스크립트가 있습니다. 인터랙션을위한 대안이 훨씬 더 나아지더라도, 그 스크립트를 "플러그 앤 플레이"할 수 있어야한다는 것이 그러한 장점보다 중요합니다. 따라서 현재 Bash를 현실적으로 풀 수있는 유일한 쉘은 이전 버전과 완전히 호환되며 그 가능성이 가장 높은 쉘은 다음 버전의 Bash입니다.
ksh
것이 사실이라면 대부분의 사람들이 다른 셸을 사용하는 것이 사실이며, 그 자체가 왜ksh
기본 셸이 아닌지 설명 할 것 입니다. 그러나 나는 그것이 그 이유라고 생각하지 않습니다.이 질문이 올 것이라고 확신하는 킬러 답변을 기다리겠습니다.