Porównanie powłok uniksowych

9

Z głównych powłok uniksowych (bash, ksh, tcsh, zsh, inne?), Czy są jakieś ważne powody, aby używać jednego nad drugim?

  • Który jest najbardziej interaktywny / przyjazny dla wiersza poleceń?
  • Który jest najbardziej sprzyjający / intuicyjny w pisaniu skryptów?
  • Czy są jakieś główne wbudowane funkcje oferowane przez jedną powłokę, których inne nie oferują?
  • Czy którakolwiek z tych powłok jest naprawdę dobra dla jednego rodzaju funkcji, ale nie innego? Czy wszystkie są dość dobrze zaokrąglone / elastyczne?
  • Czy to tylko kwestia osobistych preferencji?

Mogę zrobić tę wiki społeczności, jeśli ktoś woli.

Andy White
źródło

Odpowiedzi:

17

Obecny:

  • bash- Ponownie powłoka Bourne'a, domyślna powłoka w większości dystrybucji Linuksa. Przyzwoite funkcje;
  • zsh - najbardziej bogaty w funkcje, ale wciąż rzadko używany;
  • ksh - domyślna powłoka w systemach Solaris, AIX i kilku innych unikatach;
  • tcsh - domyślna skorupa w różnych * jednorożcach o smaku BSD;

Historyczny:

  • sh- oryginalna skorupa Bourne'a (wydana w 1977 r.). Przestarzałe przez bash;
  • csh- oryginalna powłoka C (wydana w 1978 r.). Przestarzałe przez tcsh i ksh;

Zauważ, że bash, ksh i zsh pochodzą ze składni sh, podczas gdy tcsh pochodzi ze składni csh. To dwie zupełnie różne składnie.

Tabela funkcji (wiki).

vartec
źródło
Większość skryptów jest na ogół napisana w celu zapewnienia zgodności z sh, ponieważ uruchamianie skryptu za pomocą sh jest zwykle znacznie szybsze niż bash.
Mikeage,
Jak to? W systemie Linux / bin / sh jest dowiązaniem symbolicznym do / bin / bash.
vartec
2
/ bin / sh nie zawsze jest dowiązaniem symbolicznym do / bin / bash
Brad Gilbert
1
Kiedy tworzysz bash jako „sh”, działa on w trybie „sh”, który obsługuje podzbiór poleceń bash. Uważam, że składnia „sh” jest standardem POSIX.
duffbeer703
W Debianie możesz używać „dash” zamiast „/ bin / sh”.
drybjed
9

fish to nowa skorupa, która jest być może bardziej interesująca niż inne, nie dlatego, że niekoniecznie ma więcej funkcji, ale dlatego, że po prostu działają domyślnie i ponieważ ryba dąży do użyteczności.

Kilka zrzutów ekranu ( 1 , 2 , 3 , 4 ) wystarczy, aby dać ogólny pomysł.

fish jest teraz domyślną powłoką na moim komputerze Mac w pracy. Domyśl.

Peter Hilton
źródło
2

Jeśli chcesz nauczyć się powłoki innej niż sh/ bash, równie dobrze możesz po prostu pójść z nią zsh. Nie sądzę, żeby ktokolwiek poważnie kwestionował to, że jest to najmocniejsza i pełna funkcji alternatywnych powłok; kwestia, czy to tylko wzdęcie, jest oczywiście nadal przedmiotem debaty.

Słyszałem o dobrych rzeczach fish, ale nigdy nie podejmowałem wysiłku, aby zawracać sobie nimi głowę.

Administratorzy, których znam, uważają cshi tcshsą obrzydliwościami, których należy unikać za wszelką cenę, i zgadzam się z nimi, mimo że nigdy nie byłem zmuszony do przebicia się przez którąkolwiek z tych powłok.

Kquinn
źródło
2

Poleciłbym dobrze znać bash, ponieważ jest to jeden z najczęstszych (ogólnie domyślny Linux). Osobiście uwielbiam Zsh jako moją interaktywną powłokę. Ma świetne funkcje uzupełniania. Na przykład, możesz ustawić listę hostów, a kiedy zrobisz coś takiego jak ssh Ser [tab], będzie wiedział, że spróbujesz automatycznie uzupełnić tabulator jednym z tych hostów. Ma również globalne rekurencyjne, więc jeśli chcesz znaleźć wszystkie pliki jpeg w bieżącym i podkatalogu, których możesz użyć ls -ld **/*.jpg. Zsh oferuje wiele zabawnych funkcji (wyszukiwanie plików .zshrc innych osób) i można ustawić opcję „kompatybilności z bash”, dzięki czemu można łatwo przełączać się między nimi. Jeśli połączysz to z GNU Screen, może okazać się, że korzystanie z wiersza poleceń staje się przyjemnością.

Kyle Brandt
źródło
1

Nie zapomnij o innym pytaniu Najczęstsza powłoka Unix / Linux - najpopularniejsza powłoka jest prawdopodobnie najpopularniejsza z jakiegoś powodu ;-)

Jeśli chodzi o to, co jest warte, większość ludzi nie przełącza się często między powłokami, więc trudno będzie uzyskać dokładne porównanie różnych opcji; bardziej prawdopodobne będzie, że zobaczysz różnych ludzi opowiadających się za zaletami swoich ulubionych pocisków. Z tego, co niewiele słyszałem o różnych powłokach, wszystkie oferują niektóre z tych samych podstawowych funkcji (takich jak przekierowanie We / Wy, historia poleceń itp.), Więc osobiste preferencje prawdopodobnie będą dużym elementem.

David Z
źródło
1

Niezbędnym powodem korzystania z ZSH, o którym nie wspomniano, jest tryb vi i tryb emacs .

Dla tych, którzy lubią korzystać z pamięci mięśni vi w powłoce, jest to funkcja zabójcza.

A dla tych, którzy wolą emacs, możesz również użyć tych skrótów klawiszowych, ale prawdziwi wierzący w emacsa prawdopodobnie powiedzieliby, że emacs jest ich ulubioną powłoką.

;-)

Somantra
źródło
0

Preferencje w codziennym użytkowaniu są raczej osobistym gustem, jednak pisząc skrypty, staram się być zgodny z posixem ze względu na przenośność.

Vincent De Baere
źródło
0

Podobnie jak Heads Up: Ubuntu domyślnie „sh” zamienia na „dash”, co w przeszłości powodowało problemy z kompatybilnością POSIX. Najwyraźniej polecenia echa różnią się nieznacznie.

Imbus
źródło