유닉스 쉘의 비교


9

주요 유닉스 쉘 (bash, ksh, tcsh, zsh 등) 중에서 서로를 사용해야하는 강력한 이유가 있습니까?

  • 가장 대화 형 / 명령 줄 친화적 인 것은 무엇입니까?
  • 스크립트 작성에 가장 도움이되고 직관적 인 것은 무엇입니까?
  • 하나의 쉘이 다른 쉘이 제공하지 않는 주요 내장 기능이 있습니까?
  • 이 쉘들 중 어떤 것이 어떤 유형의 기능에는 좋지만 다른 기능에는 적합하지 않습니까? 아니면 모두 다재다능하고 유연합니까?
  • 개인적인 취향의 문제 일까?

원하는 경우이 커뮤니티 위키를 만들 수 있습니다.

답변:


17

흐름:

  • bash— Bourne은 대부분의 Linux 배포에서 기본 쉘인 다시 쉘입니다. 괜찮은 기능;
  • zsh — 가장 기능이 풍부하지만 여전히 거의 사용되지 않습니다.
  • ksh — Solaris, AIX 및 기타 몇 가지 다른 유니스의 기본 쉘.
  • tcsh — 다양한 * BSD 플레이버 유니스의 기본 쉘;

역사적인:

  • sh— 원래 Bourne 쉘 (1977 년 출시). bash가 더 이상 사용하지 않습니다.
  • csh— 원본 C 쉘 (1978 년 출시). tcsh 및 ksh에서 사용되지 않습니다.

bash, ksh 및 zsh는 sh 구문에서 파생되는 반면 tcsh는 csh 구문에서 파생됩니다. 이것은 매우 다른 두 가지 구문입니다.

기능 차트 (wiki).


sh를 통해 스크립트를 실행하는 것이 일반적으로 bash보다 훨씬 빠르기 때문에 대부분의 스크립트는 일반적으로 sh 호환으로 작성됩니다.
— Mikeage

어떻게한다는거야? Linux에서 / bin / sh는 / bin / bash에 symlink입니다.
— vartec

2
/ 빈은 / SH 항상 / 빈 / bash는 심볼릭 링크 아니다
— 브래드 길버트

1
bash를 "sh"로 인스턴스화하면 bash 명령의 서브 세트를 지원하는 "sh"모드에서 실행됩니다. "sh"구문은 POSIX 표준이라고 생각합니다.
— duffbeer703 2:08에

데비안에서는 '/ bin / sh'대신 'dash'를 사용할 수 있습니다.
— drybjed

9

물고기 는 다른 것보다 아마도 더 흥미로운 새로운 껍질입니다. 왜냐하면 그것은 더 많은 기능을 가지고 있기 때문이 아니라 기본적으로 작동하기 때문이며 물고기는 유용성을 위해 노력하기 때문입니다.

몇 가지 스크린 샷 ( 1 , 2 , 3 , 4 )으로 일반적인 아이디어를 얻을 수 있습니다.

fish는 이제 직장에서 Mac의 기본 쉘입니다. 그림을 이동.


2

sh/ 이외의 쉘을 배우려면을 bash사용하십시오 zsh. 나는 누군가가 그것이 가장 강력하고 기능이 풍부한 대안 쉘이라고 진지하게 경쟁한다고 생각하지 않습니다. 그것이 단지 부풀어 오른 것인지 여부는 여전히 논쟁의 여지가 있습니다.

에 대한 좋은 소식은 들었지만 fish귀찮게하려고 노력한 적이 없습니다.

내가 아는 관리자 는 모든 비용으로 피해야 할 가증 한 사람으로 간주 csh되며 tcsh, 어느 한 쪽 껍질을 통해 나 자신을 강요하지는 않았음에도 불구하고 그들과 동의합니다.


2

bash를 가장 일반적으로 사용하는 것이 좋습니다 (일반적으로 Linux 기본값). 개인적으로 저는 zsh를 대화 형 쉘로 좋아합니다. 훌륭한 완성 기능이 있습니다. 예를 들어, 호스트 목록을 설정할 수 있으며 ssh Ser [tab]과 같은 작업을 수행하면 해당 호스트 중 하나를 자동 완성하는 것을 시도합니다. 또한 재귀 글로브가 있으므로 현재 및 하위 디렉토리에서 모든 jpeg 파일을 찾으려면을 사용할 수 있습니다 ls -ld **/*.jpg. zsh (사람의 .zshrc 파일 검색)에는 많은 재미있는 기능이 있으며 'bash 호환'으로 설정할 수 있으므로 둘 사이를 쉽게 전환 할 수 있습니다. 이것을 GNU Screen과 결합하면 명령 행이 꽤 즐거워 질 것입니다.


1

다른 질문을 잊지 마십시오 가장 일반적인 유닉스 / 리눅스 쉘 -가장 인기있는 쉘은 아마도 이유 때문에 가장 인기가 있습니다 ;-)

가치있는 일을 위해 대부분의 사람들은 쉘 사이를 자주 전환하지 않기 때문에 다양한 옵션을 잘 비교하기가 어렵습니다. 당신은 다른 사람들이 자신이 좋아하는 껍질의 미덕을 옹호하는 것을 보게 될 것입니다. 다른 쉘에 대해들은 바가 거의 없기 때문에 모두 동일한 기본 기능 (I / O 리디렉션, 명령 기록 등)을 제공하므로 개인 취향이 큰 구성 요소가 될 수 있습니다.


1

언급되지 않은 ZSH를 사용해야하는 강력한 이유는 vi 모드와 emacs 모드 입니다.

쉘에서 vi 근육 메모리를 사용하는 것을 좋아하는 사람들에게 이것은 킬러 기능입니다.

그리고 이맥스를 선호하는 사람들에게는 그 키 바인딩도 사용할 수 있지만, 진정한 이맥스 신자들은 아마도 이맥스가 가장 좋아하는 쉘이라고 말할 것입니다.

;-)


0

매일 사용하는 것을 선호하는 것은 실제로 개인적인 취향의 수학자이지만, 스크립트를 작성할 때 이식성을 위해 posix를 준수하려고합니다.


0

우즈 투는 기본적으로 "sh"를 "dash"로 설정하여 과거 POSIX 호환성 문제를 일으켰습니다. 반향 명령은 약간 다릅니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.