Apa perbedaan antara "Shell" dan "Bash" dan apa arti istilah-istilah ini?
Sejauh yang saya tahu, tidak ada perbedaan. Tetapi saya telah melihat banyak buku tentang "Shell" dan yang lain tentang "Bash"!
Jadi kalau-kalau saya ingin bekerja dengan Terminal pada Mac OS X dan menulis beberapa skrip bash, saya ingin tahu buku seperti apa yang harus saya gunakan.
Jawaban:
" Shell " adalah perangkat lunak apa pun yang menyediakan antarmuka ke sistem operasi. Misalnya, explorer.exe adalah shell default di Windows (meskipun ada alternatif ), dan pada OS X Finder menyediakan banyak fungsi yang sama. Pada Linux / * nix, shell dapat menjadi bagian dari lingkungan desktop (seperti Gnome atau KDE ), atau dapat berupa komponen perangkat lunak terpisah yang berada di atasnya (seperti Unity atau Cinnamon ).
Contoh di atas adalah semua cangkang grafis yang menggunakan kombinasi jendela, menu, ikon, dan elemen lainnya untuk menyediakan antarmuka pengguna grafis (GUI) yang dapat berinteraksi dengan menggunakan kursor mouse. Namun, dalam konteks perangkat lunak seperti Bash, atau penulisan skrip, "shell" biasanya diartikan sebagai interpreter baris perintah, yang sebagian besar melakukan tugas yang sama dengan shell grafis, kecuali seluruhnya berbasis teks.
Bash adalah contoh spesifik dari shell command-line, dan mungkin salah satu yang paling terkenal, menjadi default di banyak distribusi Linux serta OS X. Bash dirancang sebagai pengganti shell Bourne (Bash berdiri untuk "Bourne again shell"), salah satu shell Unix pertama .
Contoh dari shell baris perintah pada Windows termasuk cmd.exe (alias Command Prompt) dan PowerShell .
sumber
Bash adalah salah satu dari beberapa cangkang.
Shell pada sistem Unix atau mirip Unix seperti OSX atau Linux adalah program aplikasi yang menyediakan antarmuka baris perintah ke sistem operasi, memungkinkan Anda mengetik perintah dan menjalankannya. Ada beberapa shell yang berbeda untuk dipilih tetapi mereka semua memberikan wildcarding nama file, perpipaan, di sini dokumen, substitusi perintah, variabel dan struktur kontrol untuk pengujian kondisi dan iterasi.
Shell Unix yang asli adalah shell Bourne , sh, ditulis oleh Stephen Bourne di Bell Labs. Lalu datanglah shell C , yang ditulis oleh Bill Joy di Berkeley, sejak diperbarui sebagai tcsh . Kerang lainnya termasuk kerang Korn , ksh, ditulis oleh David Korn, juga di Bell Labs, dan bash , "Bourne again shell", ditulis oleh Brian Fox untuk proyek GNU sebagai pengganti gratis untuk sh.
Saat ini, bash mungkin adalah shell Unix yang paling populer tetapi banyak orang (termasuk saya) masih lebih suka shell C berdasarkan (apa yang bagi sebagian dari kita sepertinya) sintaksisnya yang lebih bagus. Pada dasarnya, ini masalah selera, jadi saya sarankan membaca artikel Wikipedia yang saya tautkan untuk membantu Anda memulai.
sumber
Istilah 'shell' dinamai dengan baik. Secara harfiah shell di sekitar O / S memungkinkan pengguna untuk berinteraksi dengan komputer. Ketika awalnya dikandung ada sangat sedikit jika ada antarmuka pengguna grafis (tidak ada windows :(). Semuanya dilakukan pada baris perintah. Tetapi bahkan baris perintah membutuhkan tempat tinggal. Ia hidup, dan masih, di shell .
Secara sederhana, agar baris perintah bermanfaat, diperlukan instruksi yang bisa dihubungi. Jadi program dibuat untuk dijalankan di dalam shell agar baris perintah dapat digunakan. Program-program tersebut dikelompokkan dalam paket mereka sendiri, dan dimaksudkan untuk bekerja bersama. Mereka termasuk program seperti "ls" dan "grep", "ps", "sed", dll. Mereka juga termasuk perintah pengalihan file seperti ">" dan "<" dan pipa ("|"). Lebih penting lagi mereka juga memasukkan konstruksi pemrograman seperti operasi kondisional (jika, lalu, lain, untuk loop, sementara loop, cara untuk memeriksa status yang dikembalikan ketika Anda menjalankan pernyataan (misalnya jika Anda menjalankan "ls" apakah itu menemukan sesuatu?), Hal seperti itu). Ini adalah dasar dari skrip baris perintah (shell) yang lebih kompleks,
Ketika seseorang menggunakan istilah 'Bash Shell' mereka berbicara tentang penerjemah baris perintah yang disebut 'Bash' yang berjalan di shell O / S. Anda bisa menganggapnya sebagai kependekan dari 'Bash Shell Interpreter'. Ada penerjemah lain seperti Bourne (Bash adalah 'Bourne Shell yang baru dan lebih baik dan merupakan kependekan dari Bourne Again Shell). Ada juga C-Shell, K-Shell (disukai oleh banyak orang yang menulis skrip shell kompleks), dan varian GNU lainnya. Selama bertahun-tahun sudah menjadi kebiasaan untuk merujuk ke juru bahasa command line tertentu yang Anda gunakan sebagai shell karena yang satu tidak dapat digunakan tanpa yang lain. Tetapi kenyataannya adalah mereka berbeda.
Mengapa mereka dikenal sebagai interpreter baris perintah dan bukan sebagai shell yang sebenarnya: itu karena mereka hidup di shell dan menafsirkan semua perintah seolah-olah mereka sedang menjalankan program. Dan shell tidak peduli apa yang Anda jalankan di dalamnya, selama memenuhi standar yang benar.
Dan mengapa mereka disebut penafsir, itu karena mereka benar-benar penafsir. Bahkan jika Anda tidak secara eksplisit menjalankan skrip (dan skrip sebenarnya hanyalah file teks dari perintah yang Anda buat sehingga Anda dapat menjalankan perintah yang sama berulang-ulang tanpa harus mengetiknya lagi). Misalnya, ambil perintah 'ls' yang rendah hati. Ketika Anda menjalankannya, ia mengembalikan daftar file. Tetapi bagaimana cara kerjanya lebih penting bagi pertanyaan Anda: Ini sebenarnya berjalan di dalam konteks interpreter baris perintah, bahkan jika Anda hanya menjalankan apa yang tampaknya menjadi perintah sederhana. Artinya, ini berjalan seolah-olah itu adalah pernyataan di bagian dari program yang lebih besar. Ini berjalan seolah-olah itu dalam file skrip shell script tanpa benar-benar berada di file skrip shell. File skrip shell anonim.
Apa pun yang Anda jalankan pada baris perintah memiliki kesamaan (apakah itu perintah tunggal seperti 'ls' atau file skrip yang penuh dengan perintah dan iterator dan pernyataan bersyarat): semuanya diproses oleh penerjemah baris perintah; baik itu Bash, C-Shell, K-Shell (default pada AIX btw).
Untuk melihat apa yang saya maksud, buat direktori 'test':
Masukkan dan jalankan perintah berikut
Anda akan mendapatkan semacam respons seperti 'tidak ada file atau direktori'. Sekarang masukkan perintah
($? Katakan, beri tahu saya apa yang Anda temukan di komputer samar berbicara.) Anda harus melihatnya mengembalikan nomor (seharusnya) '2'. Itu adalah kode kembali dari grep yang berarti 'tidak ada file atau direktori'. Sekarang jalankan yang berikut ini:
Anda akan melihat file 'hello.txt' dikembalikan dari perintah grep awal dan sekarang akan melihat 'echo $?' mengembalikan angka '0' yang berarti itu benar-benar menemukan sesuatu.
Bahkan jika perintah yang tampaknya tidak aktif ini dijalankan, penerjemah baris perintah bertindak seolah-olah mereka adalah bagian dari program yang lebih besar dan melacak nilai kembalinya. Itu sebabnya jika Anda lupa * pada akhir perintah grep itu tidak kembali. Ia tahu pernyataan itu tidak lengkap dan mengharapkan lebih banyak input. Setelah semua Anda mungkin akan memintanya untuk menangkap hasil dari beberapa loop yang sangat sah untuk ditulis dan dijalankan pada baris perintah.
Intinya adalah shell adalah shell, dan interpreter (apa pun nama yang Anda gunakan, 'Bash', k-shell, dll.) Berbeda. Tetapi sering kali mereka digunakan secara bergantian, karena pada suatu saat mereka benar-benar terikat bersama.
sumber
Shell adalah antarmuka pengguna berbasis teks.
Bash adalah jenis shell.
sumber
bash
adalah salah satushell
keluarga, tetapi ada banyak kerang lainnya.Sebagai contoh, pada Minix3 , ada shellnya
ash
, ia tidak mendukung array asosiatifbash4
.Standar POSIX adalah upaya untuk membuat API portabel antara shell dan OS yang berbeda.
Lihat http://en.wikipedia.org/wiki/Unix_shell#Bourne_shell_compatible
sumber
bash
adalah salah satu dari banyak kerang yang ada.Semua kerang memiliki persamaan dan perbedaan. Misalnya skrip yang ditulis dalam bash, mungkin sepenuhnya atau sebagian besar kompatibel dengan shell lain (misalnya zsh ).
Karena fakta yang
bash
sangat luas, sering kali tersirat bahwa sebuah skrip kompatibel dengannya.Jika Anda ingin membeli buku, belilah yang ditulis khusus untuk cangkang yang ingin Anda gunakan. Akan lebih baik untuk membaca perbedaan mereka sebelum menghabiskan uang.
sumber