Hangi kabuğu kullanmalıyım - tcsh vs bash? [kapalı]


30

tcshUzun zamandır kullanıyorum . Ancak ne zaman bir şey ararsam, genellikle belirtilen yöntemlerin bashspesifik olduğunu tespit ederim . Kabuk betiklerinin sözdizimi bile ikisi için farklıdır.

İnternette arama ve öğrenmeyi deneyimlediklerimden, en bashyaygın kullanılan kabuk gibi görünüyor. Bu sitedeki etiketlenmiş soru sayısı bile, etiketlenen soru sayısından çok bashdaha fazla (şu anda beş kat daha fazla) tcsh.

Bu yüzden bash'a geçmem gerekip gerekmediğini merak ediyorum. Ne düşünüyorsun?

Neden OR'a bağlı kalmalıyım ? tcshNeden taşınmalıyım bash?


3
Bash'a geçiş yapan birini duyduğumu sanmıyorum ; normalde insanlar bash kullanır çünkü varsayılandır ve sonra daha iyi bir şeye geçer :)
Michael Mrozek

6
@Michael: Pekala, OS X sürüm 10.3'te tcsh'den bash'a geçti, bu yüzden bash'a geçen bir insan durumu.
sepp2k

5
kullanmanız gerekir zsh(hangi OS X'e
geçmeliydiniz

6
ama senaryolarınızı dashhemen hemen her şey üzerinde çalışacak olanlar için yazın
xenoterracide

2
Herkesin önerdiği şekilde biraz eğlendirici buluyorum zsh. Aynı zamanda eğlenceli değil çünkü ops sorusuna gerçekten cevap vermiyor. bu yüzden zsh yanıtımı yorum değil yanıt olarak yaptım. Düzgün olsa da, tcsh komut dosyasını nasıl kabuklayacağınızı öğrenmekte zorluk çekmiyorsanız, bildiklerinize geçin. Kullanmakta tcshsorun yaşıyorsanız sorununuzu buraya yazın. Sadece geçiş yapma çünkü . Daha fazla bash mesajı var, çünkü daha fazla yere varsayılan olarak yüklenir, bu onu daha iyi yapmaz.
xenoterracide

Yanıtlar:


22

Bash öğrendikten sonra tcsh'ın geriye doğru bir adım olduğunu biliyorum. Mesela bash'da kolayca yapabileceğim şeyi tcsh'da yapmayı zor buluyorum. Tcsh hakkındaki sorum . İnternet desteği ve dokümantasyonu bash için çok daha iyi ve tcsh için çok sınırlı. Bash O'Reilly kitaplarının sayısı harika ama tcsh için benzer bir şey bulamadım.


26

Aslında, oraya gitmelisin zsh! Aslında geriye dönük olarak uyumludur ve bashbüyük bir yardımsızlık yardımı ile bütün faydalarından faydalanmaktadır . Bir kitap bile var (okumaya başaramadığım halde).

Ben itiraf edecek bir kullanmamayı nedenle zshüzerinde bashama sürekli çok sayıda yeni tesislerdeki çalışmadığınız sürece gerçekten geçerli değildir. Özellikle de en önemli farkları biliyorsanız . Ancak bu gerçekten vimve arasındaki farklara benzer vi; saf olmak istemezsin ama pratik olarak önemli değil. Sert vimkullanıcılar bile kendi yollarını bulabilirler emacsve tersi de olabilir.


20

POSIX uyumlu bir kabuğa geçmelisiniz: http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html , bash, ksh, dash, ama zsh değil, kesinlikle tcsh değil. Csh'nin betik yazımı için kötü bir seçenek olarak ilan edilmesinden bu yana uzun zaman geçti: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ , tcsh bu alanda o kadar farklı değil.

Komut dosyaları yazarken, tekrar taşınabilir olmayan bir şeyde kilitli kalmak istemiyorsanız POSIX yalnızca yapıları (yani temelleri ve benzerlerini önlemek) kullandığınızdan emin olun.


7

Takıntılı uyumluluk noktası eksik, sanırım. Her şeyi #!/bin/shen üste koyarak ve .sh uzantısını kullanarak uyumlu hale getirmeye çalışırsanız , ancak bash dışında hiçbir şeyi test etmiyorsanız, uyumlu bir komut dosyası garanti etmediniz! Kullanımdan hemen Better #!/bin/bashve .bash kullanıcıların aslında gerçek gereksinimi biliyorum ki.

Eğer biliyorsanız zsh , tcsh , ya da başka daha iyi bir şey bash ve bunun için iyi bir referans kılavuzu var, sakın çekinmeyin . Tıpkı insanların bazı betikleri çalıştırabilmesi için perl veya python kurmayı beklediği gibi , müstehcen kabuğunuzu da kurabilirler! : D


1
Aslında /bin/shtcsh csh'den türetilmiş kabuk iken, korn uyumlu kabuğa işaret etme garantisi yoktur. /bin/shZaten bash veya uyumlu başka bir kabuğa işaret etmesi muhtemeldir ve kullanıcı kabuğunun değişmesinden etkilenmeyeceği neredeyse kesindir . csh ve sh tamamen uyumlu değildir.
Maciej Piechotka,

1
Neyin garanti olduğundan emin değilim. "/ Bin / sh" için senaryo yazan birçok kişi olduğunu biliyorum; Bash-as- / bin / sh'ın tolere ettiği, ancak aklını karıştıran dash(Debian ashve Bourne uyumlu kabuk).
Kevin Cantu

Başka bir nokta: #! / Bin / bash hangi Bash sürümünü kullandığınızı sınırlamaz ve en kötüsü v2 ile uzun zaman önce tanıtılsa da, bir sürümden diğerine bazı uyumsuzluklar vardır. POSIX uyumluluk modundaki sürümler arasındaki uyumsuzluğu bilmiyorum.
Charles Stewart

Herkes istediği kabuk için yazmaktan çekinmeli ve #!/bin/shyalnız -nePOSIX için geçerli bir noktaya değinmelisiniz. Bununla birlikte, POSIX uyumluluğu ile ilgili endişelenmek, 'takıntılı' olarak adlandırılan değerlendirme türü olmamalıdır. shVarsayılanları çağırmak debian / ubuntu ile belirlenir ve bir süredir vardır. Bunun 'garantili' olarak nitelendirilemeyeceğini biliyorum, ancak nadiren taşınabilirliği garantili olan herhangi bir şeyi düşünürdüm. Bir 'kabuk betiği' ile daha da ayrılmış olurdum.
JM Becker,


0

zsh muhtemelen tcsh ile bash'den daha fazla benzerlik gösterir.

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

İnsanlar genellikle zsh'nin bash'ın yapamadığı şeyleri yapabileceğini iddia eder, ancak böyle olduğunu bulamadım. Ne var görülme zsh için bash bir eklenti komut iken, yerleşik veya varsayılan olarak açık, kolay açık olması gerekiyor ya da daha zor olmasıdır.

(feragatname: Bazen zsh'a geçmeyi düşünen bir bash kullanıcısıyım)


-3

Bazı nedenlerden dolayı, 20 yıldan daha önce kullandığım gibi tcsh kullandım. Bildiğim kadarıyla bash sh kaynaklı, fakat elbette birçok csh maddesi var ama tcsh csh kaynaklı. İlk günlerde komut tamamlamayı gerçekten çok seviyorum ama artık çoğu mermide mevcut. Script için / bin / sh 'a yapalım mı?


6
Bu gerçekten soruyu cevaplamaya çalışmıyor. Daha çok bir yorum.
slm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.