Shell mana yang harus saya gunakan - tcsh vs bash? [Tutup]

30

Saya telah menggunakan tcshuntuk waktu yang lama sekarang. Tetapi setiap kali saya mencari sesuatu, saya sering menemukan bahwa metode yang ditentukan bashspesifik. Bahkan sintaks untuk skrip shell berbeda untuk keduanya.

Dari apa yang saya alami mencari dan belajar di internet, bashnampaknya shell yang lebih umum digunakan. Bahkan jumlah pertanyaan di situs yang ditandai bashini jauh lebih banyak (lima kali lebih banyak saat ini) daripada jumlah pertanyaan yang ditandai tcsh.

Jadi, saya bertanya-tanya apakah saya harus beralih ke bash. Apa yang kamu pikirkan?

Mengapa saya harus berpegang teguh pada tcshATAU mengapa saya harus pindah ke bash?

Lazer
sumber
3
Saya tidak berpikir saya pernah mendengar seseorang beralih ke bash; biasanya orang menggunakan bash karena ini adalah default dan kemudian beralih ke sesuatu yang lebih baik :)
Michael Mrozek
6
@Michael: Ya, OS X beralih dari tcsh ke bash di versi 10.3, jadi itu salah satu kasus orang beralih ke bash.
sepp2k
5
Anda harus menggunakan zsh(yang seharusnya diganti oleh OS X)
xenoterracide
6
tetapi tulis skrip Anda untuk dashitu harus bekerja pada apa saja.
xenoterracide
2
Saya merasa agak lucu bahwa semua orang menyarankan zsh. Pada saat yang sama itu tidak lucu karena tidak benar-benar menjawab pertanyaan ops. itulah sebabnya saya membuat tanggapan zsh saya sebagai komentar, bukan jawaban. Terus terang, kecuali jika Anda kesulitan mempelajari cara membuat shell script tcsh, ikuti apa yang Anda ketahui. Jika Anda memiliki masalah menggunakan tcshposting masalah Anda di sini. Jangan beralih hanya karena . Ada lebih banyak postingan bash karena diinstal secara default di lebih banyak tempat, itu tidak membuatnya lebih baik.
xenoterracide

Jawaban:

22

Setelah mempelajari bash, saya menemukan bahwa tcsh sedikit mundur. Misalnya apa yang bisa saya lakukan dengan mudah di bash, saya merasa sulit melakukannya di tcsh. Pertanyaan saya di tcsh . Dukungan dan dokumentasi Internet juga jauh lebih baik untuk bash dan sangat terbatas untuk tcsh. Jumlah buku O'Reilly tentang bash sangat bagus, tetapi saya belum menemukan yang serupa dengan tcsh.

Andrew Stern
sumber
26

Sebenarnya, Anda harus pindah ke zsh! Ini pada dasarnya kompatibel ke belakang dan memiliki semua kegunaan bashdengan bantuan besar keangkeran . Bahkan ada buku (meskipun saya belum sempat membacanya).

Saya akan mengakui satu alasan untuk tidak menggunakan zshlebih dari bashtetapi kecuali Anda terus bekerja di beberapa instalasi baru itu tidak benar-benar berlaku. Terutama jika Anda tahu tentang yang paling signifikan perbedaan . Namun ini benar-benar mirip dengan perbedaan antara vimdan vi; Anda tidak ingin menjadi naif tetapi praktis itu bukan masalah besar. Bahkan vimpengguna hardcore dapat menemukan jalan mereka emacsdan sebaliknya.

gvkv
sumber
20

Anda harus beralih ke shell yang sesuai dengan POSIX http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html , seperti salah satu dari bash, ksh, dash, tetapi tidak zsh dan tentu saja bukan tsh. Sudah lama sejak csh dinyatakan sebagai pilihan yang buruk untuk skrip: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ , tcsh tidak jauh berbeda di area itu.

Saat menulis skrip, pastikan untuk menggunakan konstruksi POSIX saja (mis. Hindari bashism dan sejenisnya) jika Anda tidak ingin dikunci lagi dalam sesuatu yang tidak portabel.

jlliagre
sumber
7

Obsesi kompatibilitas tidak ada gunanya, saya pikir. Jika Anda mencoba membuat semuanya kompatibel dengan menempatkan #!/bin/shdi bagian atas dan menggunakan ekstensi .sh , tetapi tidak pernah menguji apa pun kecuali bash , Anda belum menjamin skrip yang kompatibel! Lebih baik gunakan saja #!/bin/bashdan .bash agar pengguna benar-benar mengetahui kebutuhan sebenarnya.

Jika Anda tahu zsh , tcsh , atau sesuatu yang lebih baik daripada bash , dan memiliki manual referensi yang bagus untuk itu, jangan menahan diri . Seperti halnya orang yang mengharapkan untuk menginstal perl atau python untuk dapat menjalankan beberapa skrip, mereka juga dapat menangani menginstal shell Anda yang tidak jelas! : D

Kevin Cantu
sumber
1
Sebenarnya tidak /bin/shdijamin untuk menunjuk ke shell yang kompatibel dengan korn sementara tcsh adalah shell yang diturunkan dari csh. Kemungkinan /bin/shsudah menunjuk ke bash atau shell lain yang kompatibel dan hampir pasti tidak akan terpengaruh oleh perubahan shell pengguna . csh dan sh sama sekali tidak kompatibel.
Maciej Piechotka
1
Saya tidak yakin apa yang dijamin. Saya tahu ada banyak orang yang menulis skrip untuk "/ bin / sh" yang berserakan dengan Bash-isme yang ditoleransi oleh Bash-as- / bin / sh, tetapi membingungkan dash( ashShell kompatibel dengan Debian dan Bourne).
Kevin Cantu
Poin lain: #! / Bin / bash tidak akan membatasi versi Bash mana yang Anda gunakan dan ada beberapa ketidakcocokan dari satu versi ke versi lain, meskipun yang terburuk sudah lama diperkenalkan dengan v2. Saya tidak tahu ada yang tidak kompatibel antara versi dalam mode kompatibilitas POSIX.
Charles Stewart
Siapa pun harus merasa bebas untuk menulis untuk shell apa pun yang mereka inginkan, dan Anda membuat poin yang valid sehubungan dengan POSIX #!/bin/shsaja -ne. Namun, khawatir tentang kompatibilitas POSIX tidak boleh menjadi jenis pertimbangan yang berlabel 'terobsesi'. Meminta shdasbor default dengan debian / ubuntu, dan sudah cukup lama sekarang. Saya tahu itu tidak akan memenuhi syarat sebagai 'dijamin', tetapi jarang saya menganggap portabilitas apa pun 'dijamin'. Saya bahkan akan lebih dicadangkan dengan 'skrip shell'.
JM Becker
6

Shell yang mana? Pilih yang dengan rasio "kemudahan penggunaan" vs "kerepotan" terbaik ...

Jika Anda tidak dapat menemukan contoh umum dan penjelasan yang cukup untuk shell "Maserati" Anda, maka kinerja ekstra mungkin lebih merupakan masalah daripada bonus ...

Saya menemukan artikel / situs ini menarik; mungkin layak dibaca:
perbedaan shell UNIX dan cara mengganti shell Anda

Peter.O
sumber
0

zsh mungkin memiliki beberapa kemiripan dengan tcsh daripada bash.

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

Orang-orang sering mengklaim bahwa zsh dapat melakukan hal-hal yang tidak dapat dilakukan oleh bash, tetapi saya belum menemukan itu yang menjadi masalahnya. Apa yang saya telah melihat adalah bahwa untuk zsh lebih mudah, dibangun di atau diaktifkan secara default, sementara di bash itu adalah sebuah script addon, harus dihidupkan, atau lebih sulit.

(penafian: Saya pengguna bash yang terkadang mempertimbangkan untuk beralih ke zsh)

KellyClowers
sumber
-3

Untuk beberapa alasan, saya menggunakan tcsh, seperti yang saya gunakan 20 tahun lalu. Seperti yang saya tahu bash berasal dari sh tetapi tentu saja dengan banyak hal csh tetapi tcsh berasal dari csh. Saya sangat suka penyelesaian perintah di hari-hari awal tetapi tersedia di sebagian besar shell sekarang. Untuk skrip, haruskah kita tetap menggunakan / bin / sh?

David
sumber
6
Ini tidak benar-benar berusaha menjawab pertanyaan. Ini lebih banyak komentar.
slm