Której powłoki powinienem użyć - tcsh vs bash? [Zamknięte]

30

Używam od tcshdłuższego czasu. Ale gdy czegoś szukam, często okazuje się, że określone metody są bashspecyficzne. Nawet składnia skryptów powłoki jest różna dla obu.

Z tego, czego doświadczyłem, szukając i ucząc się w Internecie, bashwydaje się , że jest to najczęściej używana powłoka. Nawet liczba otagowanych pytań na tej stronie bashjest znacznie większa (obecnie pięciokrotnie) niż liczba otagowanych pytań tcsh.

Zastanawiam się więc, czy powinienem przejść na bash. Co myślisz?

Dlaczego powinienem trzymać się tcshLUB dlaczego powinienem się przenieść bash?

Lazer
źródło
3
Chyba nigdy nie słyszałem o tym, żeby ktoś przestawił się na bash; normalnie ludzie używają bash, ponieważ jest to ustawienie domyślne, a następnie przełączają się na coś lepszego :)
Michael Mrozek
6
@Michael: Cóż, OS X przeszedł z tcsh na bash w wersji 10.3, więc jest to jeden przypadek ludzi przechodzących na bash.
sepp2k
5
powinieneś użyć zsh(do którego OS X powinien był przejść)
ksenoterracyd
6
ale napisz swoje skrypty, ponieważ dashpowinny one działać na wszystko.
ksenoterrakid
2
To trochę zabawne, że wszyscy sugerują zsh. Jednocześnie nie jest to zabawne, ponieważ tak naprawdę nie odpowiada na pytanie operacyjne. dlatego moją odpowiedź zsh uczyniłem komentarzem, a nie odpowiedzią. Mówiąc wprost, chyba że masz problemy z nauką powłoki powłoki tcsh, skorzystaj z tego, co wiesz. Jeśli masz problemy z używaniem, tcshopublikuj swój problem tutaj. Nie przełączaj się po prostu dlatego . Jest więcej postów bash, ponieważ jest domyślnie instalowany w większej liczbie miejsc, co nie poprawia go.
ksenoterrakid

Odpowiedzi:

22

Po nauczeniu się basha stwierdzam, że tcsh jest krokiem wstecz. Na przykład to, co mógłbym łatwo zrobić w bash, trudno mi zrobić w tcsh. Moje pytanie na tcsh . Wsparcie internetowe i dokumentacja są również znacznie lepsze dla bash i bardzo ograniczone dla tcsh. Liczba książek O'Reilly na bash jest świetna, ale nie znalazłem nic podobnego dla tcsh.

Andrew Stern
źródło
26

Właściwie powinieneś przejść do zsh! Jest zasadniczo kompatybilny wstecz i ma całą użyteczność bashz dużą, ogromną pomocą niesamowitości . Jest nawet książka (chociaż nie przeczytałem jej).

Muszę przyznać do jednego powodu, aby nie używać zshponad bashale chyba jesteś stale pracuje w wielu nowych instalacji to nie ma zastosowania. Zwłaszcza jeśli wiesz o najważniejszych różnicach . Jest to jednak bardzo podobne do różnic między vimi vi; nie chcesz być naiwny, ale praktycznie to nic wielkiego. Nawet zapaleni vimużytkownicy mogą znaleźć drogę emacsi na odwrót.

gvkv
źródło
20

Powinieneś przełączyć się na powłokę zgodną z POSIX http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html , na przykład bash, ksh, dash, ale nie zsh i na pewno nie tcsh. Minęło dużo czasu, odkąd csh został uznany za zły wybór dla skryptów: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ , tcsh nie różni się zbytnio w tym obszarze.

Pisząc skrypty, upewnij się, że używasz tylko konstrukcji POSIX (tj. Unikaj bashism i podobnych), jeśli nie chcesz być ponownie zamykany w czymś nieprzenośnym.

jlliagre
źródło
7

Myślę, że obsesyjna zgodność nie ma sensu. Jeśli spróbujesz uczynić wszystko kompatybilnym, umieszczając go #!/bin/shna górze i używając rozszerzeń .sh , ale nigdy nie testujesz niczego poza bash , nie masz gwarancji kompatybilnego skryptu! Lepiej jest po prostu używać #!/bin/bashi .bash , aby użytkownicy faktycznie znali prawdziwe wymagania.

Jeśli znasz zsh , tcsh lub coś lepszego niż bash i masz do tego dobrą instrukcję, nie powstrzymuj się . Tak jak ludzie oczekują, aby zainstalować Perla lub Pythona, aby móc uruchamiać niektóre skrypty, tak samo mogą poradzić sobie z instalacją nieznanej powłoki! :RE

Kevin Cantu
źródło
1
W rzeczywistości nie ma /bin/shgwarancji wskazywania powłoki zgodnej z Kornem, podczas gdy tcsh jest powłoką pochodną csh. Prawdopodobnie /bin/shjuż wskazuje na bash lub inną kompatybilną powłokę i jest prawie pewne, że zmiana powłoki użytkownika nie wpłynie na to . csh i sh są całkowicie niezgodne.
Maciej Piechotka
1
Nie jestem pewien, co jest gwarantowane. Wiem, że jest wiele osób piszących skrypty dla „/ bin / sh”, które są zaśmiecone Bash-isms, które Bash-as- / bin / sh toleruje, ale które mylą dash( ashpowłoka kompatybilna z Debianem i Bourne).
Kevin Cantu,
Kolejna kwestia: #! / Bin / bash nie będzie ograniczać używanej wersji Basha, a niektóre wersje są niezgodne, chociaż najgorsze zostały wprowadzone dawno temu w wersji v2. Nie znam żadnych niezgodności między wersjami w trybie zgodności z POSIX.
Charles Stewart
Każdy powinien napisać dla dowolnej powłoki, a ty masz rację, jeśli chodzi o #!/bin/shsam -nePOSIX. Jednak obawa o kompatybilność z POSIX nie powinna być rodzajem rozważania oznaczonego jako „obsesja”. Wywoływanie shdomyślnego dash z debian / ubuntu i już od jakiegoś czasu. Wiem, że nie kwalifikuje się to jako „gwarantowane”, ale rzadko uważam, że „przenośność” jest gwarantowana. Byłbym jeszcze bardziej powściągliwy dzięki „skryptowi powłoki”.
JM Becker,
6

Która skorupa? Wybierz ten, który ma najlepszy stosunek łatwości użycia do kłopotów ...

Jeśli nie możesz znaleźć wystarczającej liczby ogólnych przykładów i wyjaśnień dla swojej powłoki „Maserati”, to jej dodatkowa wydajność może być większym problemem niż premią ...

Uważam ten artykuł / witrynę za interesujący; warto przeczytać:
różnice w powłokach UNIX i jak zmienić powłokę

Peter.O
źródło
0

Zsh prawdopodobnie ma kilka więcej podobieństw do tcsh niż bash.

Zobacz: http://zsh.sourceforge.net/FAQ/zshfaq02.html#l13

Ludzie często twierdzą, że zsh może robić rzeczy, których bash nie potrafi, ale nie znalazłem tego. Co ja już widać, że dla zsh jest łatwiej, wbudowany lub domyślnie włączona, natomiast w bash jest to skrypt dodatek, musi być włączone, lub jest trudniejsze.

(zrzeczenie się: Jestem użytkownikiem bash, który czasami rozważał przejście na zsh)

KellyClowers
źródło
-3

Z jakichś powodów używałem tcsh, tak jak korzystałem z niego 20 lat temu. Jak wiem, bash pochodzi z sh, ale oczywiście z dużą ilością csh, ale tcsh pochodzi z csh. Naprawdę podoba mi się wykonywanie polecenia na początku, ale jest ono teraz dostępne w większości powłok. Czy w przypadku skryptów powinniśmy trzymać się / bin / sh?

David
źródło
6
To tak naprawdę nie próbuje odpowiedzieć na pytanie. To bardziej komentarz.
slm