Perbandingan cangkang Unix

9

Dari shell Unix utama (bash, ksh, tcsh, zsh, lainnya?), Adakah alasan kuat untuk menggunakan satu sama lain?

  • Yang mana yang paling interaktif / baris perintah yang ramah?
  • Manakah yang paling kondusif / intuitif untuk menulis skrip?
  • Apakah ada fitur bawaan utama yang ditawarkan oleh satu shell yang tidak dimiliki oleh yang lain?
  • Apakah ada di antara cangkang ini yang benar-benar bagus untuk satu jenis fungsi, tetapi tidak yang lain? Atau apakah mereka semua cukup bulat / fleksibel?
  • Apakah ini hanya masalah pilihan pribadi?

Saya dapat membuat komunitas wiki ini jika ada yang lebih suka.

Andy White
sumber

Jawaban:

17

Arus:

  • bash- Bourne lagi shell, shell default di sebagian besar distribusi Linux. Fitur yang layak;
  • zsh - Fitur yang paling kaya, tetapi masih jarang digunakan;
  • ksh - shell default di Solaris, AIX dan beberapa unix lainnya;
  • tcsh - shell default dalam berbagai * BSD flavor unices;

Bersejarah:

  • sh- shell Bourne asli (dirilis 1977). Usang oleh bash;
  • csh- shell C asli (dirilis 1978). Usang oleh tcsh dan ksh;

Perhatikan, bash, ksh dan zsh berasal dari sintaks sh, sedangkan tcsh berasal dari sintaks csh. Ini adalah dua sintaks yang sangat berbeda.

Bagan fitur (wiki).

vartec
sumber
Kebanyakan skrip pada umumnya ditulis untuk memenuhi persyaratan, karena meluncurkan skrip via sh biasanya jauh lebih cepat daripada bash.
Mikeage
Bagaimana dengan itu? Di Linux / bin / sh adalah symlink ke / bin / bash.
vartec
2
/ bin / sh tidak selalu merupakan symlink ke / bin / bash
Brad Gilbert
1
Saat Anda instantiate bash sebagai "sh", itu berjalan dalam mode "sh" yang mendukung subset dari perintah bash. Saya percaya bahwa sintaks "sh" adalah standar POSIX.
duffbeer703
Di Debian Anda dapat menggunakan 'dash' sebagai pengganti '/ bin / sh'.
drybjed
9

ikan adalah cangkang baru yang mungkin lebih menarik daripada yang lain, bukan karena itu pasti memiliki lebih banyak fitur, tetapi karena mereka Hanya Bekerja secara default dan karena ikan berusaha untuk kegunaan.

Beberapa tangkapan layar ( 1 , 2 , 3 , 4 ) sudah cukup untuk memberikan gambaran umum.

ikan sekarang adalah shell default pada Mac saya di tempat kerja. Sosok pergi.

Peter Hilton
sumber
2

Jika Anda akan belajar sebuah shell selain sh/ bash, Anda mungkin juga cukup dengan zsh. Saya tidak berpikir ada orang yang dengan serius membantah bahwa itu adalah shell alternatif yang paling kuat dan penuh fitur; apakah itu hanya mengasapi, tentu saja, masih bisa diperdebatkan.

Saya pernah mendengar hal-hal baik tentang fish, tetapi tidak pernah berusaha untuk repot dengan mereka.

Admin yang saya tahu menganggap cshdan tcshmenjadi kekejian yang harus dihindari dengan cara apa pun, dan saya setuju dengan mereka meskipun tidak pernah dipaksa untuk menempatkan diri saya melalui kedua shell.

kquinn
sumber
2

Saya akan merekomendasikan mengetahui bash dengan baik karena ini adalah salah satu yang paling umum (umumnya standar Linux). Secara pribadi, saya suka zsh sebagai shell interaktif saya. Ini memiliki fitur penyelesaian yang luar biasa. Sebagai contoh, Anda dapat mengatur daftar host dan ketika Anda melakukan sesuatu seperti ssh Ser [tab] ia akan tahu untuk mencoba tab secara otomatis melengkapi salah satu dari host tersebut. Ini juga memiliki globing rekursif, jadi jika Anda ingin menemukan semua file jpeg di subdirektori saat ini dan Anda dapat menggunakan ls -ld **/*.jpg. Ada banyak fitur menyenangkan dengan zsh (mencari file .zshrc orang), dan Anda dapat mengaturnya menjadi 'bash kompatibel', sehingga mudah untuk beralih di antara keduanya. Jika Anda menggabungkan ini dengan Layar GNU Anda mungkin menemukan baris perintah menjadi cukup menyenangkan untuk bekerja dengannya.

Kyle Brandt
sumber
1

Jangan lupa pertanyaan Anda yang lain. Unix / Linux shell yang paling umum - shell yang paling populer mungkin paling populer karena suatu alasan ;-)

Untuk apa nilainya, kebanyakan orang tidak sering mematikan kerang sehingga sulit untuk mendapatkan perbandingan yang lengkap dari berbagai opsi; Anda akan lebih cenderung melihat orang yang berbeda mendukung kebaikan kerang favorit mereka. Dari sedikit yang saya dengar tentang cangkang yang berbeda, mereka semua menawarkan beberapa fitur dasar yang sama (seperti pengalihan I / O, sejarah perintah, dll.) Sehingga preferensi pribadi cenderung menjadi komponen besar.

David Z
sumber
1

Alasan kuat untuk menggunakan ZSH yang belum disebutkan adalah mode vi dan mode emacs .

Bagi mereka yang suka menggunakan memori otot vi mereka di shell, ini adalah fitur pembunuh.

Dan bagi mereka yang lebih suka emacs, Anda dapat menggunakan keybindings itu juga, tetapi emacs-Mukmin sejati mungkin akan mengatakan bahwa emacs adalah shell favorit mereka.

;-)

Somantra
sumber
0

Preferensi untuk penggunaan sehari-hari benar-benar merupakan selera pribadi, namun, ketika menulis skrip, saya mencoba untuk memenuhi persyaratan posix demi portabilitas.

Vincent De Baere
sumber
0

Sama seperti Heads Up: Ubuntu default "sh" to "dash" yang menyebabkan beberapa masalah di masa lalu dengan kompatibilitas POSIX. Rupanya, perintah gema sedikit berbeda.

lImbus
sumber