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.
Apa yang mendefinisikan tanda hubung sebagai shell skrip default?
wjandrea
1
@wjandrea Fakta bahwa /bin/shsymlink untuk /bin/dashmembuat 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/shterutama untuk alasan portabilitas, ketika Anda mengharapkan skrip Anda akan digunakan pada beberapa platform OS mirip Unix, yang sebagian besar memiliki /bin/shshell yang sesuai dengan POSIX, Bourne-family.
Sergiy Kolodyazhnyy
29
pengantar
Script shell dan Bashscripting bukan hal yang sama, seperti shell lain yang ada seperti shyang dapat digunakan untuk menjalankan script; skrip yang dimaksudkan untuk dieksekusi Bashharus diberi label sebagai Bashskrip. 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 shdan bashpaling 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
Shadalah shell Unix asli yang dikembangkan oleh Stephen Bourne; namun sistem berbasis Debian dan Ubuntu menganggapnya dashsebagai shshell ( shsebenarnya 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 . Bashsingkatan dari Bourne Again SHell dan dikembangkan kemudian oleh Brian Fox dan banyak memperpanjang aslinya sh. Pengembangan Fox dan lainnya Bashadalah bagian penting dari proyek GNU. Lihat ini diskusi besar sejarah Bashuntuk informasi lebih lanjut.
Penting untuk dicatat bahwa keduanya shdan Bash, seperti yang digunakan dalam Ubuntu dan distribusi lainnya, adalah POSIXsesuai, 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 POSIXparameter 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 bashskrip, dan ada #!/bin/bashdi bagian atas skrip. Sebenarnya tidak masalah apakah skrip itu disebut script.sh atau my.script , yang penting adalah apakah panggilan ke penerjemah itu /bin/shatau tidak /bin/bash. Script Shell juga dapat dipanggil pada baris perintah dengan salah satu shatau bash.
Namun, penting untuk dicatat bahwa hasilnya bisa berbeda tergantung pada penerjemah mana yang dipanggil, karena tidak semua bashperintah akan bekerja sh, sedangkan sebagian besar shperintah akan bekerja bash. Secara umum, sebagian besar pengguna ingin menggunakan /bin/bashskrip mereka sehingga mereka dapat mengambil keuntungan dari rangkaian fitur yang diperluas; skrip sistem dapat dijalankan dengan /bin/shjika 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 Bashdan diterbitkan oleh O'Reilly. Pengantar yang baik juga dilakukan oleh Panduan pemula Bash .
Jawaban ini sebenarnya lebih unggul dari milikku (jawaban yang diterima), milikku baru datang seminggu sebelum ini.
Hilton Shumway
4
Ada beberapa kerang tersedia untuk Ubuntu, seperti bash, zsh, ksh, tcshdan 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 bashscripting, dia menggunakan shell, tetapi ketika seseorang berbicara tentang scripting shell, dia tidak menggunakan per se bash. Tapi seperti bashyang 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 4Mar2911:53/bin/sh -> dash*
$ ls -l /bin/dash
-rwxr-xr-x 1 root root 109768Mar2911:53/bin/dash*
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 955024Apr308: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.
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/shshebang) 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
Shebang specifier dan path yang seragam untuk executable shell pada OS yang mirip Unix
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.
Jika suatu perintah atau opsi tidak didefinisikan oleh POSIX, maka jangan meletakkannya di dalam
#! /bin/shskrip terlebih dahulu.
Konversi skrip Anda atau periksa kesalahan
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:
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.
sumber
/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 sepertish
yang dapat digunakan untuk menjalankan script; skrip yang dimaksudkan untuk dieksekusiBash
harus diberi label sebagaiBash
skrip. Istilah-istilah ini sering digunakan secara bergantian karenaBash
, dengan fungsi yang diperluas dibandingkan dengansh
, adalah yang paling umum digunakan untuk mengeksekusi skrip pengguna di banyak distribusi. Namun, ada cangkang lain sepertiKorn (ksh)
,C shell (csh)
danZ shell (zsh)
, tetapi kami tidak akan membahasnya di sini sebagai diskusish
danbash
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 menganggapnyadash
sebagaish
shell (sh
sebenarnya terhubung kedash
). Di Debian dan Ubuntu, karena kecepatansh
, 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 aslinyash
. Pengembangan Fox dan lainnyaBash
adalah bagian penting dari proyek GNU. Lihat ini diskusi besar sejarahBash
untuk informasi lebih lanjut.Penting untuk dicatat bahwa keduanya
sh
danBash
, seperti yang digunakan dalam Ubuntu dan distribusi lainnya, adalahPOSIX
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 dalamPOSIX
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 sebagaibash
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 satush
ataubash
.Namun, penting untuk dicatat bahwa hasilnya bisa berbeda tergantung pada penerjemah mana yang dipanggil, karena tidak semua
bash
perintah akan bekerjash
, sedangkan sebagian besarsh
perintah akan bekerjabash
. 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 padaBash
dan diterbitkan oleh O'Reilly. Pengantar yang baik juga dilakukan oleh Panduan pemula Bash .sumber
Ada beberapa kerang tersedia untuk Ubuntu, seperti
bash
,zsh
,ksh
,tcsh
dancsh
.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 sebash
. Tapi sepertibash
yang biasa digunakan dalam scripting untuk Ubuntu, dia biasanya begitu. Selain itu, cangkang yang berbeda adalah sama dalam banyak aspek, jadi biasanya tidak masalah.sumber
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:
sumber
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
Shebang specifier dan path yang seragam untuk executable shell pada OS yang mirip Unix
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 menunjukbin/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-bashTerminal 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
Aturan umum adalah:
Konversi skrip Anda atau periksa kesalahan
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:
https://www.shellcheck.net/
http://mywiki.wooledge.org/Bashism
sumber