왜 대부분의 OS에서 bash가 기본 쉘입니까?


38

왜 대부분의 OS (우분투, 페도라, OSX 등)에서 bash가 기본 쉘입니까? 많은 고급 사용자가 주로 zsh를 사용하는 이유는 무엇입니까? 그것이 좋다면 왜 기본값이 아닌가?

나는 두 가지를 모두 사용하지만 모든 작업에 대한 차이점을 보지 못한다 :)


5
모든 것이 가우시안 곡선입니다. 대부분의 고급 사용자가을 사용하는 ksh것이 사실이라면 대부분의 사람들이 다른 셸을 사용하는 것이 사실이며, 그 자체가 왜 ksh기본 셸이 아닌지 설명 할 것 입니다. 그러나 나는 그것이 그 이유라고 생각하지 않습니다.이 질문이 올 것이라고 확신하는 킬러 답변을 기다리겠습니다.
kos

1
사실 우분투는 대시 를 기본 쉘로 사용한다고 생각합니다 .
Bakuriu

1
이것은 좋은 대답이 있습니다, 나는 우리가 그것을 열어두고 투표합니다.
Seth

답변:


33

나는 이것에 대해 약간의 독서를했고 결론은 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와 호환되지 않으며 스크립팅에는 적합하지 않습니다 .


1
다른 곳에서 복사하여 붙여 넣을 때 이것이 사실임을 분명히 나타내야합니다.
muru

1
@muru 나는 ​​원래 게시물에 대한 링크를 제공했지만 더 명확 할 수 있다고 주장합니다.
마크 커비

zsh에 스크립팅과 관련하여 몇 가지 단점이 있다는 의견의 출처는 무엇입니까? 신경 쓰지 마라. 나는 그 의견이 다른 곳에서 온 것을 본다.
스쿠터

1
물고기 도 있습니다 (sh 구문과 호환되지 않음).
Léo Lam

1
Korn 쉘 편집에 무엇이 부족했는지 설명해 주시겠습니까? 90 년대에도 항상 잘 작동하는 것 같았습니다.
Jonathan Leffler

9

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를 사용하도록 남겨 두는 것을 꺼려합니다. 같은 배포판에 대한 두 가지 다른 기본값은 아마도 지원하지 않아도되고 사용자 / 회사도 다루고 싶지 않은 것입니다.


1

유닉스 쉘 언어는 모두 추악합니다. 특히 ( csh), 일부는 조금 적을 수도 ksh있지만 (실제로 알지 못하지만) 실제로 큰 프로젝트의 가독성 및 강성과 같은 측면에서는 아무도 잘 설계된 범용 언어에 접근 할 수 없습니다. Python, C # 또는 Haskell. 따라서 단단한 것을 원할 때 쉘 풍미를 전혀 선택하지 않을 것입니다.

간단한 일을 빨리 끝내고 싶을 때 선택하십시오. 이를 위해서는 다음이 필요합니다.

  • 간결한 구문과 충분한 일관성을 통해 실제로 암기 할 수 있습니다 (속기 연산자를 찾기가 어렵습니다). 쉘이 어디에나 설치되어 있다면 그것은 중요합니다. 왜냐하면 당신은이 kludge 몬스터들 중 하나 이상을 실제로 암기하지 않기 때문입니다.
  • 대화식 기능이 우수하여 터미널에 직접 해킹하여 여러 스크립트 파일을 전환하지 않고도 작업 할 수 있습니다.
  • 어디에서나 스크립트 스 니펫을 가져 와서 작동시키는 기능. sh호환성은 여기에 큰 장점이며 다시 한 번 더 인기가 좋습니다.

따라서 쉘 언어에서는 일반 언어보다 인기가 더 큽니다. 따라서 ksh언어 자체가 조금 더“더 나은” 경우에도 bash, 좀 더 대중적 일 경우 (해당 부분이 처음으로 기본 언어로 선택된 이후 로) 해당 언어를 사용하는 데있어 그다지 많은 광고가 없습니다. GNU의 경우).

스위치를 만드는 사람들은 고의적으로 그것에 대해 생각하고 좋아하는 쉘로의 전환을 쉽게 처리 할 수있었습니다. 덜 인기있는 쉘로 작업 해야하는 신인 OTOH는 인터넷에 무언가를 요청하면 작동하지 않으면 빨리 혼란 스러울 것입니다. 따라서 유닉스 참전 용사를 목표로하는 모든 배포판 bash은 표준 이외 의 다른 것을 만들면 상당히 위험을 감수합니다 .


1
공백의 양에 관심이있는 모든 언어는 "잘 디자인 된"것이 아니지만 인기가 핵심이라는 데 동의합니다.
Nagora

1
@ 나고 라 : 의견은 다양합니다. FWIW, 항상 공백 대신 중괄호와 세미콜론을 사용하여 Haskell을 작성할 수 있으며 Python에 비슷한 폴 백이 있다고 가정합니다. 들여 쓰기 기반 그룹화는 가독성에 놀랍기 때문에 아무도 이것을하지 않습니다.
leftaroundabout

1
  1. 필요할 때 있었어요
  2. 초보자는 일주일 동안 프롬프트를 사용자 정의 할 수있는 충분한 눈 사탕이 있습니다.
  3. 일반적인 사용 사례로는 충분합니다 (가장 일반적인 것은 단일 명령을 시작하는 것입니다)
  4. 펄이 충분하지 않으면 파이썬과 루아가 느슨해집니다.
  5. 펄은 끔찍한 대화식 쉘을 만듭니다
  6. 물고기, ksh 또는 zsh가 이론적으로 더 나은 껍질 일 수는 있지만 펄이 잘 작동하거나 이식성이 문제가 될 때 귀찮게하기에 충분하지 않습니다. 어쨌든 대시를 대상으로하고 있습니다.

0

"Critical Mass"는 IMO의 주요 답변입니다. Bash는 명령 줄 작업뿐만 아니라 스크립팅을위한 것이며, 수많은 Bash 스크립트가 있습니다. 인터랙션을위한 대안이 훨씬 더 나아지더라도, 그 스크립트를 "플러그 앤 플레이"할 수 있어야한다는 것이 그러한 장점보다 중요합니다. 따라서 현재 Bash를 현실적으로 풀 수있는 유일한 쉘은 이전 버전과 완전히 호환되며 그 가능성이 가장 높은 쉘은 다음 버전의 Bash입니다.


1
기본 쉘이 무엇이든 관계없이 모든 bash 스크립트를 사용할 수 있습니다. 이것이 스크립트 상단에있는 그녀의 의미 (#! / bin / bash)입니다.
Panther

1
@ bodhi.zazen bash 쉘이 시스템에 존재하는 한. bash가 포함되어 있지 않은 Solaris 버전 이상을 알고 있습니다.
Tulains Córdova 2016 년

@ bodhi.zazen 상호 작용과 스크립팅을위한 두 개의 쉘 사이를 전환해야하는 정신적 비용이있다. 일반적으로 귀찮은 가치가 없습니다.
Nagora 2016 년

1
@Nagora 스크립트 를 실행 하는 데 드는 정신 비용은 얼마입니까?
kos

문자 그대로 스크립트를 실행하는 경우 @kos 없음. 스크립트를 유지 관리하고 조정해야하는 경우 여러 기본 셸간에 종종 약간의 차이를 명심해야합니다.이 경우 진행중인 금속 비용과 컨텍스트 전환 비용이 발생합니다. "기타"구문.
Nagora 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.