IT TIP

어떤 Linux 셸을 사용해야합니까?

itqueen 2020. 12. 27. 20:32
반응형

어떤 Linux 셸을 사용해야합니까?


bash, csh 및 tcsh를 사용했습니다. 하지만 저는 이 질문 을했고 Jonathan은 csh를 신뢰할 수 없다고 말했습니다. 그래서 어떤 Linux 쉘이 개발에 좋은지. 그리고 왜?


지금까지 Linux에서 가장 일반적인 쉘은 bash입니다. 대안을 사용할 충분한 이유가없는 한 bash 또는 프로젝트 팀에서 가장 일반적으로 사용하는 셸 (또는 작업해야하는 셸 스크립트의 대부분)을 사용하는 것이 좋습니다.

매우 일반적인 다른 유일한 경쟁자는 대시이며 Ubuntu 프로젝트에서 더 널리 사용됩니다.

이것은 csh를 제외하고는 정말로 개인적인 선호 입니다.


나는 zsh를 선호합니다.

탭 완성만으로도 가치가 있습니다.

  • 원하는 경우 와일드 카드를 확장합니다 (디렉터리에서 하나의 파일을 제외한 모든 파일을 삭제하려는 경우 편리함).
  • 프로그램을 지정한 후 스위치 목록을 제공합니다.
  • 작업중인 줄 아래에 탭 완성 옵션을 제공하므로 매우 편리합니다.

http://zsh.sourceforge.net/


상호 작용을 위해서는 Zsh를 사용하십시오. 한동안 나는 Bash 탭 완성 스크립트의 FreeBSD 포트의 관리자 였지만 처음으로 Zsh를 시도하자마자 포기했습니다. Bash가 할 수있는 모든 것을 할 수 있지만 더 쉽고 우아하게 할 수 있습니다. 그것은 또한 매우 Bash와 같은 키 입력을 갖는 좋은 속성을 가지고 있습니다. 그래서 Zsh가없는 시스템을 사용한다면, 그렇게 할 수있을 것입니다. (좋은 느낌이 들지 않더라도).

스크립팅의 경우 Bourne Shell (sh)을 사용합니다. POSIX 표준 스크립팅 언어이며 스크립트는 어디서나 작동하도록 보장됩니다. Bash, Zsh 및 기타 쉘에는 놓칠 수있는 멋진 확장 기능이 있지만 특정 설정에 묶여 있습니다. 다른 곳에서는 절대 실행하지 않을 것이라고 확신하는 개인 전용 스크립트에 대한 조언을 무시하십시오.하지만 고려해야 할 실질적인 절충안입니다.

그러나 요약하면 Zsh. 나는 그것을 시도한 사람 중 즉시 영구적으로 전환하지 않은 사람을 모릅니다. 정말 좋습니다.


Fish (Friendly Interactive Shell)는 대부분의 다른 조개에 대한 좋은 대안입니다. 일관된 구문, 멋진 탭 완성 및 구문 강조 표시가 있으며 쉽게 선택하고 사용할 수 있으며 (특히 다른 셸의 습관이없는 경우) 뛰어난 런타임 도움말이 있습니다.

단점은 잘못 개발되었고 사용자 기반이 작지만 도움이되며 다른 셸과 매우 다르다는 것입니다. 쉘 관용구와의 역 호환성은 우선 순위가 아니 었습니다.

많은 경우에 이것은 좋습니다 ... 많은 표준 셸은 항상 그런 방식으로 수행 되었기 때문에 작업을 수행하는 정말 어리석은 방법을 가지고 있습니다. "do / done", "case / esac", "if / fi"? 이것은 물고기가 사라지는 광기입니다.

한 번 볼 가치가 있습니다.


내가 C Shell이 ​​아닌 다른 것을 사용해야한다고 제안한 사람이라고 생각하기 때문에, 아마도 내 발언을 약간 한정하고 'Linux의 경우 bash, 다른 플랫폼의 경우 Korn shell (bash가 설치되어 있지 않는 한 거기도) '.

편집자처럼 ( vim또는 선호합니까 emacs) 쉘 선택은 부분적으로 친숙 함의 문제이고 부분적으로 선호도의 문제입니다. C 쉘을 좋아하는 사람들이 많이 있지만 Bourne 쉘 및 파생물보다 프로그래밍이 쉽지 않다고 생각합니다. 내 .cshrc에있는 것은 실제로 exec /bin/ksh(프로필을 읽는 것과 같은 로그인 셸을 실행하기를 원하기 때문에 동일하지는 않습니다)와 동일하지만 C 셸을 사용하는 사람을 비난하지는 않습니다. 또는 정보에 입각 한 결정 인 경우 파생 상품.

C 쉘 이외의 것을 사용하기로 결정했다면 기본적으로 Bourne 쉘 캠프에 있습니다. POSIX 표준이 예상되는 동작을 다소 지정하고 다른 쉘 (즉, Bourne, Korn)을 지정합니다. 또는 Born Again shells-몇 가지 기능을 더합니다 (또는 클래식 Bourne 쉘의 경우 빼기). 코드가 Linux에서 HP-UX, Solaris 또는 AIX (전통적인 AT & T 파생 Unix 변형의 살아남은 트리오)로 이동해야하는 경우 Korn을 통해 기존 Bourne 쉘에서 쉘 스크립트를 작성하는 것을 고려해야합니다. 쉘도 꽤 안전합니다. 그러나 Linux #!/bin/sh에서는 Bash를 작성 하고 가져올 수 있고 다른 플랫폼에서는 Bourne 쉘을 얻을 수 있습니다.

나는 큰 문제없이 Korn 셸과 Bash 사이를 전환하며 사소한 문제는 거의 없습니다. 나는 잘 정의되지 않은 두 언어의 모서리를 피하는 경향이 있습니다. 이는 '둘 다에 정의 됨'을 의미하는 경향이 있습니다. Linux를 사용하는 사람들에게 또 다른 문제는 GNU 도구에 고전적인 Unix 버전보다 더 많은 옵션이 있으며 사용하는 쉘 프로그래밍 구조 때문이 아니라 사용하는 명령 옵션 때문에 이식성을 잃을 수 있다는 것입니다. 다른 시스템의 매뉴얼 페이지에 대한 경험과 준비된 액세스는 엄청난 도움이됩니다.


나는 보통 bash를 고수하는데, 왜냐하면 그것은 곧은 sh보다 친근하고 내가 반 정기적으로 사용한 모든 배포판 (SuSE, RHEL, Ubuntu, Slackware)의 기본값이기 때문입니다.

그러나 이식 가능한 쉘 스크립트를 작성할 계획이라면 모두 실제 sh 에서 실행되는지 확인하십시오 .


세게 때리다. 표준입니다.


csh의 문제는 여기에 설명 된 것처럼 스크립팅이 쓰레기라는 것 입니다. 대화 형 셸로 사용하지 말아야 할 실제 이유는 없지만 대부분의 사람들은 두 개의 다른 셸을 배워야하고 명령 줄에서 스크립트의 일부를 시험해 볼 수 없다는 점을 혼동스럽게 생각하므로 사용하는 것이 가장 쉽습니다. 모든 것에 동일합니다.

대화 형 셸의 명백한 후보는 bash, dash, zsh 및 {pd,} ksh입니다. 이 모든 것들은 약간의 확장과 함께 posix 쉘 표준을 구현합니다. 대화식 사용을 위해 좋아하는 것을 선택하십시오. bash가 Linux의 표준이기 때문에 bash를 사용하는 경향이 있지만 모두 장점이 있으며 특히 zsh가 인기있는 것 같습니다.

이식하려는 스크립트를 작성하는 경우 #! / bin / sh를 사용하고 표준 posix 쉘 구문을 사용하는지 확인하십시오. bash와 ksh 모두에서 작동한다면 아마도 표준 일 것입니다. 비표준 / bin / sh를 가진 오래된 버전의 유닉스가 있지만 당신이 알아야 할 것을 알지 않는 한 나는 그것을 귀찮게하지 않을 것입니다. 이식성에 대한 더 많은 문제는 스크립트에서 호출하는 모든 명령 줄 도구입니다.


아무도 데비안 기반 표준 인 sh데비안 Almquist 쉘에 대해 언급하지 않았습니다 dash. 완전히 POSIX와 호환되며 시작이 매우 빠르기 때문에 Debian / Ubuntu에서 /bin/sh.

그래서 저는 bash대화 형 쉘에 사용하지만 dash스크립팅 에만 사용합니다. 그렇게하면 내 스크립트가 적어도 POSIX를 준수하고 다른 POSIX 셸에서 실행된다는 것을 알 수 있습니다. ... 나는 이식성이 쉘 이상이라는 것을 알고 있지만, 내가 선을 그리는 곳입니다.


나는 큰 Ruby 사용자는 아니지만 http://rush.heroku.com/ 흥미로워 보입니다.


bash는 쉘로 가장 널리 사용되기 때문에 bash를 고수하는 것이 가장 좋으며 다른 사람으로부터받을 수있는 모든 튜토리얼이나 도움말은 bash를 사용할 가능성이 가장 높습니다. 그러나 모든 스크립트에 zsh를 사용하기 시작했으며 스크립팅 측면에서 bash보다 훨씬 우수한 것으로 나타났습니다.


Korn Shell (ksh)을 사용하지 마십시오.

완벽한 타이핑이 있고 백 스페이스 키를 사용할 필요가없는 경우를 제외하고.


나는 실제로 ksh를 좋아한다. csh 구문을 지원하지 않기 때문에 bash보다 약간 더 일관성이 있습니다. 내 경험상 tcsh는 다른 셸과 가장 호환되지 않으며 피합니다. sh에 스크립트를 작성하려고하지만 ksh에는 한 줄에 변수를 내보내고 설정하는 것과 같은 멋진 기능이 있습니다. bash는 모든 기능을 갖추고 있고 일반적이기 때문에 bash와의 호환성을 유지하려고합니다. "최상의"쉘을 선택하는 것보다 더 중요한 이식 가능한 쉘 스크립트를 작성하려면이 책을 참조하십시오.

Portable Shell Programming : An Extensive Collection of Bourne Shell Examples (HP Professional Series) by Bruce Blinn (Paperback-Oct 29, 1995) amazon.com


나는 완벽한 타이핑에 가까운 것이없이 항상 pdksh를 사용한다 (아마도 termcap을 고쳐야 할까?).

ksh는 표준, csh는 표준, bash는 '표준'이지만 Linux에서만 가능합니다. ksh를 대상으로하는 것이 좋습니다.


실제 스크립트를 작성하려면 ksh프로그래밍에 유용한 몇 가지 확장 기능 이 있고 애완 동물 성가심 중 하나를 수정 하는을 선호합니다 .

bash인터랙티브 세션을 선호하지만 다른 무엇보다 개인적인 선호도 문제입니다. Bourne 유형의 쉘인지 확인하십시오.


나는 또한 csh, tcsh에서 bash로 왔습니다. 다르지만 시간이 지나면 적어도 C- 쉘만큼 멋집니다.

For Scripting I would recommand ksh, because it's available on most Unixes (Solaris, HP-UX , OSF/1 (The best UNIX ever ;) - for it's time)) and it has good features. With Korn you can programm most of the scripts. Sporadicaly you would like to get more then a number, as return value from a function, or you have some data that you can not put in a simple array, or you need something that has better capabilities in case of regegs, or what ever, then I would propose perl.


For scripting, try using dash for a while to get a good feel for what is portable. If you ever use bash to write a shell script, please explicitly declare bash in the scripts shebang.

For your personal console use, experiment with what is out there. Find something that you're comfortable with. Be eccentric and annoy all your sysadmin friends by picking up a shell that has to be compiled from source for every machine you care to use it on.


I think FISH is the best, is has syntax highlighting(for commands that don't exists) and it can autofill. And it is very easy to learn.


Select one: a. tcsh b. ksh c. zsh d. login e. bash

I would use login. Just sayin.

ReferenceURL : https://stackoverflow.com/questions/199661/what-linux-shell-should-i-use

반응형