Jawaban:
Bash ( bash
) adalah salah satu dari banyak shell Unix yang tersedia (namun yang paling umum digunakan). Bash adalah singkatan dari " B ourne A gain SH ell", dan merupakan pengganti / peningkatan dari shell Bourne asli ( sh
).
Skrip shell adalah skrip dalam shell apa pun , sedangkan skrip Bash adalah skrip khusus untuk Bash. Namun dalam praktiknya, "skrip shell" dan "skrip bash" sering digunakan secara bergantian, kecuali shell yang dimaksud bukan Bash.
EDIT: Sebenarnya, shell scripting default di Ubuntu adalah dash, sedangkan shell interaktif default (apa yang Anda dapatkan jika Anda menarik terminal) adalah Bash. Meskipun demikian, kedua istilah tersebut sebagian besar masih dapat dipertukarkan.
/bin/sh
symlink untuk /bin/dash
membuat shell sistem default , tapi itu bukan shell scripting default , yaitu tidak ada aturan tertulis yang benar-benar harus Anda gunakan /bin/sh
. Ketika seseorang menggunakannya /bin/sh
terutama untuk alasan portabilitas, ketika Anda mengharapkan skrip Anda akan digunakan pada beberapa platform OS mirip Unix, yang sebagian besar memiliki /bin/sh
shell yang sesuai dengan POSIX, Bourne-family.
pengantar
Script shell dan Bash
scripting bukan hal yang sama, seperti shell lain yang ada seperti sh
yang dapat digunakan untuk menjalankan script; skrip yang dimaksudkan untuk dieksekusi Bash
harus diberi label sebagai Bash
skrip. Istilah-istilah ini sering digunakan secara bergantian karena Bash
, dengan fungsi yang diperluas dibandingkan dengan sh
, adalah yang paling umum digunakan untuk mengeksekusi skrip pengguna di banyak distribusi. Namun, ada cangkang lain seperti Korn (ksh)
, C shell (csh)
dan Z shell (zsh)
, tetapi kami tidak akan membahasnya di sini sebagai diskusi sh
dan bash
paling relevan untuk Ubuntu. Artikel IBM yang hebat di sini membahas lebih detail tentang evolusi shell di Linux dan menjelaskan dengan baik arsitektur shell dan bagaimana shell berbeda.
Script Shell
Sh
adalah shell Unix asli yang dikembangkan oleh Stephen Bourne; namun sistem berbasis Debian dan Ubuntu menganggapnya dash
sebagai sh
shell ( sh
sebenarnya terhubung ke dash
). Di Debian dan Ubuntu, karena kecepatan sh
, ia lebih sering digunakan untuk prosedur sistem kritis dan untuk mengeksekusi skrip kunci pada saat startup; untuk lebih jelasnya lihat wiki Ubuntu . Bash
singkatan dari Bourne Again SHell dan dikembangkan kemudian oleh Brian Fox dan banyak memperpanjang aslinya sh
. Pengembangan Fox dan lainnya Bash
adalah bagian penting dari proyek GNU. Lihat ini diskusi besar sejarah Bash
untuk informasi lebih lanjut.
Penting untuk dicatat bahwa keduanya sh
dan Bash
, seperti yang digunakan dalam Ubuntu dan distribusi lainnya, adalah POSIX
sesuai, yang berarti mereka berlangganan sejumlah standar tentang bagaimana perintah dieksekusi di Shell. Ini untuk memastikan bahwa hasil skrip yang digunakan dalam OS dapat diprediksi dengan andal, dan bahwa perilaku shell dapat disimpan dalam POSIX
parameter tersebut, karena itu sangat penting bagi pengembang. Untuk informasi lebih lanjut tentang standar, lihat dokumentasi resmi .
Seringkali skrip shell memiliki akhiran .sh
, meskipun skrip tersebut dimaksudkan untuk dieksekusi sebagai bash
skrip, dan ada #!/bin/bash
di bagian atas skrip. Sebenarnya tidak masalah apakah skrip itu disebut script.sh atau my.script , yang penting adalah apakah panggilan ke penerjemah itu /bin/sh
atau tidak /bin/bash
. Script Shell juga dapat dipanggil pada baris perintah dengan salah satu sh
atau bash
.
Namun, penting untuk dicatat bahwa hasilnya bisa berbeda tergantung pada penerjemah mana yang dipanggil, karena tidak semua bash
perintah akan bekerja sh
, sedangkan sebagian besar sh
perintah akan bekerja bash
. Secara umum, sebagian besar pengguna ingin menggunakan /bin/bash
skrip mereka sehingga mereka dapat mengambil keuntungan dari rangkaian fitur yang diperluas; skrip sistem dapat dijalankan dengan /bin/sh
jika diperlukan.
Sumber daya untuk skrip Bash Shell
Terkadang sulit untuk menemukan sumber daya daring yang mengikuti praktik yang baik dan yang memberikan saran yang memungkinkan Anda membuat skrip yang bermanfaat. Setelah itu man bash
, beberapa sumber yang paling penting adalah wiki Greg , peretas Bash , dan buku terbaru Steve Parker tentang skrip Shell yang berfokus terutama pada Bash
dan diterbitkan oleh O'Reilly. Pengantar yang baik juga dilakukan oleh Panduan pemula Bash .
Ada beberapa kerang tersedia untuk Ubuntu, seperti bash
, zsh
, ksh
, tcsh
dan csh
.
Jadi kapan saja seseorang mengatakan shell , dia berbicara tentang salah satunya. Namun, cangkang tersebut sedikit berbeda satu sama lain. Jadi, ketika seseorang berbicara tentang bash
scripting, dia menggunakan shell, tetapi ketika seseorang berbicara tentang scripting shell, dia tidak menggunakan per se bash
. Tapi seperti bash
yang biasa digunakan dalam scripting untuk Ubuntu, dia biasanya begitu. Selain itu, cangkang yang berbeda adalah sama dalam banyak aspek, jadi biasanya tidak masalah.
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 29 11:53 /bin/sh -> dash*
$ ls -l /bin/dash
-rwxr-xr-x 1 root root 109768 Mar 29 11:53 /bin/dash*
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 955024 Apr 3 08:58 /bin/bash*
Ini menunjukkan bahwa 'sh' adalah symlink ke 'dash', dan bahwa / bin / bash, yang merupakan shell interaktif bawaan pada Ubuntu, adalah executable yang hampir 9 kali lebih besar dari / bin / sh.
Memang, 'man sh' (1590 lines) vs 'man bash' (5459 lines) mengungkapkan bahwa bash adalah superset besar dari 'sh' tradisional.
Baca lebih lanjut di sini:
Script Shell akan didefinisikan sebagai skrip berorientasi portabilitas yang dapat dijalankan oleh shell sistem dari POSIX-compliant OSs. Sintaksnya akan sama atau mirip dengan sintaksis bahasa scripting shell yang didefinisikan oleh standar POSIX. Itu adalah standar untuk sebagian besar OS yang kompatibel dengan POSIX, seperti Linux / Unix / * BSD dll. POSIX adalah landasan paling umum untuk kompatibilitas di seluruh Sistem Operasi.
OS yang berbeda dari implementasi shell yang disebutkan di atas berbeda untuk penggunaan non-interaktif (mis. Untuk mengeksekusi skrip sistem atau skrip yang menggunakan #! /bin/sh
shebang) yang selain mengimplementasikan perintah dan sintaks POSIX, memiliki ekstensi sendiri atau mungkin dapat dilucuti dari beberapa fitur yang kurang bermanfaat untuk alasan kinerja, tetapi tanah POSIX memungkinkan portabilitas skrip yang sangat tinggi yang dirancang untuk OS yang sesuai dengan POSIX.
Sebagian besar tersebut OS memiliki shell interaktif yang terpisah yang biasanya penuh fitur pesta . Bash sebagian besar kompatibel dengan POSIX, tetapi juga memiliki kumpulan besar perintah tambahan dan mendukung sintaks yang berbeda. Memulai Bash dengan opsi baris perintah --posix atau mengeksekusi 'set -o posix' saat Bash sedang berjalan akan menyebabkan Bash menyesuaikan diri lebih dekat dengan standar POSIX dengan mengubah perilaku untuk mencocokkan yang ditentukan oleh POSIX di area di mana Bash default berbeda, lihat: https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html
Berkat aturan seragam tentang penempatan executable untuk shell (biasanya ada di direktori '/ bin /'), kita dapat memiliki aturan seragam untuk membuat skrip shell, lebih khusus lagi, kita jelas jalur apa yang harus dimasukkan dalam ekspresi shebang untuk menunjuk pada shell yang dapat dieksekusi untuk menjalankan skrip. Sistem file Unix / Linux / * BSD tidak mendukung ekstensi secara intrinsik, sehingga ekstensi file hanya berfungsi sebagai petunjuk tambahan, atau untuk tujuan pengindeksan.
Pada Debian / Ubuntu secara khusus, bin/sh
adalah symlink menunjuk bin/dash
yang merupakan executable dari dash shell . Itu membuat dash shell sistem, yang diperkirakan 4x lebih cepat dan ~ 1/10 ukuran daripada bash yang lebih fungsional. sumber: https://unix.stackexchange.com/questions/148035/is-dash-or-some-other-shell-faster-than-bash
Terminal interaktif Debian / Ubuntu secara default, seperti di banyak sistem lain Unix-seperti operasi, bash, yang jalan juga seragam: /bin/bash
.
POSIX.1-2017 standar: http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xcu_chap02.html
Jika suatu perintah atau opsi tidak didefinisikan oleh POSIX, maka jangan meletakkannya di dalam
#! /bin/sh
skrip terlebih dahulu.
Untuk mengonversi skrip Anda dari bash ke formulir POSIX, Anda mungkin ingin memeriksa bug di skrip shell Anda secara otomatis atau melihat perubahan apa pada skrip bash yang harus Anda buat agar kompatibel dengan POSIX: