Siapa pun yang pernah mengelola server lewat terminal mengenali pola ini. Anda masuk ke server, berpindah ke direktori tertentu, menyalin beberapa berkas, memampatkannya, lalu memindahkan hasilnya ke tempat lain. Besok urutan yang sama diulang. Lusa juga.

Selama rangkaiannya pendek, mengetik ulang masih terasa wajar. Persoalan muncul ketika rangkaian itu memanjang menjadi belasan perintah. Satu langkah yang terlewat membuat hasilnya salah, dan Anda baru menyadarinya beberapa hari kemudian. Pekerjaan semacam itu juga sulit diserahkan kepada rekan kerja, karena yang perlu dipindahkan bukan sekadar daftar perintah, melainkan urutan beserta syaratnya.

Bash script adalah jawaban paling langsung untuk persoalan tersebut. Bentuknya satu berkas teks berisi rangkaian perintah yang dijalankan berurutan oleh bash (shell standar di hampir semua sistem Linux). Sekali ditulis, rangkaian itu dapat dijalankan berulang kali dengan hasil yang sama persis.

Bash Script Adalah Berkas Berisi Perintah yang Dijalankan Berurutan

Bash script adalah berkas teks biasa yang memuat perintah-perintah shell, dibaca dan dijalankan satu per satu oleh bash dari baris pertama sampai baris terakhir. Tidak ada yang istimewa pada berkasnya. Anda bisa membuatnya dengan editor apa pun, termasuk vi yang tersedia di hampir semua server Linux.

Pertanyaan apa itu bash script sebenarnya sudah selesai di kalimat tadi. Tiga hal berikut perlu diluruskan sejak awal, karena ketiganya sering menjadi sumber kebingungan.

  1. Isinya sama persis dengan yang Anda ketik di terminal: perintah tar, cp, atau mysqldump yang berjalan di terminal akan berjalan sama di dalam skrip. Tidak ada versi khusus yang harus dipelajari terpisah.
  2. Ekstensi .sh bersifat penanda, bukan syarat: sistem tidak menentukan cara menjalankan sebuah berkas dari ekstensinya. Berkas bernama cadangan tanpa ekstensi berjalan sama baiknya. Ekstensi dipakai supaya manusia yang membaca daftar berkas langsung tahu isinya skrip.
  3. Tidak ada tahap kompilasi: bash membaca berkasnya sebagai teks setiap kali dijalankan. Anda menyunting, menyimpan, lalu langsung menjalankannya kembali.

Karena dibaca sebagai teks, kesalahan penulisan pada baris kelima belas baru ketahuan setelah empat belas baris sebelumnya sudah dijalankan. Sifat ini penting diingat, dan nanti kita kembali membahasnya di bagian pengaman.

Bash Adalah Shell, Bukan Bahasa Pemrograman Terpisah

Tiga hal berikut sering tertukar, padahal perannya berbeda. Terminal adalah jendela tempat Anda mengetik. Shell adalah program yang menerima ketikan itu, menerjemahkannya, lalu menjalankannya. Skrip adalah berkas berisi perintah yang diserahkan kepada shell.

Bash adalah salah satu shell, dan kebetulan yang paling banyak dipakai di Linux. Bash artinya Bourne Again SHell, sebuah permainan kata terhadap Bourne shell buatan Stephen Bourne yang lebih dulu ada. Brian Fox mulai menulisnya pada 10 Januari 1988 untuk Proyek GNU, dan versi pertamanya dirilis 8 Juni 1989.

Jadi ketika seseorang bertanya "apa itu bash", jawabannya bukan sebuah bahasa pemrograman yang berdiri sendiri seperti PHP atau Java. Bash adalah program penerjemah perintah, dan kemampuan menulis skrip adalah salah satu fungsinya. Sintaks yang Anda pelajari saat menulis bash script sebenarnya sintaks shell itu sendiri.

Bash masih dirawat sampai sekarang. Versi stabil terbarunya adalah bash 5.3, dirilis 30 Juli 2025, dan sudah menerima 15 tambalan resmi sejak itu. Versi ini memperkenalkan bentuk substitusi perintah baru ${ command; } yang mengambil keluaran sebuah perintah tanpa membuat proses anak.

Shell lain juga ada dan sama-sama dipakai. zsh menjadi shell default di macOS, fish menonjolkan kenyamanan pemakaian sehari-hari, dan dash dipilih banyak distribusi Linux karena ringan. Perbedaan di antara mereka bukan urusan selera semata, dan bagian selanjutnya menunjukkan akibat nyatanya.

Cara Bash Membaca dan Menjalankan Skrip Anda

Kegiatan menulis dan menjalankan skrip semacam ini lazim disebut bash scripting. Mekanismenya sederhana dan sepenuhnya berurutan. Bash mengambil satu baris, memisahkannya menjadi nama perintah dan argumen, menjalankan perintah itu sampai selesai, lalu menerima kabar hasilnya sebelum berpindah ke baris berikutnya.

Kabar hasil itu berupa exit code (kode status berupa angka). Nilainya 0 bila perintah berhasil, dan bukan 0 bila gagal. Nilai kode status terakhir tersimpan di variabel $?:

Bash
ls /etc/hosts > /dev/null
echo "sukses -> $?"

ls /tidak-ada 2>/dev/null
echo "gagal -> $?"

Keluarannya menegaskan aturan tadi:

TEXT
sukses -> 0
gagal -> 1

Yang perlu diperhatikan: secara bawaan, bash tidak berhenti ketika sebuah perintah gagal. Ia mencatat kode statusnya lalu melanjutkan ke baris berikutnya seolah tidak terjadi apa-apa. Sebuah skrip pencadangan yang gagal memampatkan berkas akan tetap melanjutkan langkah menghapus berkas sumber. Perilaku inilah yang diperbaiki oleh baris pengaman di bagian berikutnya.

Baris Shebang yang Menentukan Siapa Menjalankan Skrip

Hampir semua skrip diawali baris yang terlihat seperti komentar:

Bash
#!/bin/bash

Baris ini bukan komentar. Dua karakter pertamanya, #!, disebut shebang, dan kernel membacanya untuk menentukan program mana yang akan menjalankan sisa berkas. Kalimat lengkapnya kira-kira: "serahkan berkas ini kepada /bin/bash".

Di sinilah letak jawaban atas pertanyaan yang sering muncul, apakah berkas .sh itu shell atau bash. Ekstensinya tidak menentukan apa pun. Shebang yang menentukan. Berkas berekstensi .sh dengan shebang #!/bin/bash dijalankan oleh bash. Berkas tanpa ekstensi sama sekali pun dijalankan bash, asalkan shebang-nya menyebut bash.

Tiga bentuk shebang yang paling sering Anda temui:

  1. #!/bin/bash: menunjuk bash secara langsung di lokasi bakunya. Panduan gaya shell milik Google mewajibkan bentuk ini untuk berkas yang dijalankan langsung.
  2. #!/bin/sh: meminta "shell standar", yang pada banyak distribusi bukan bash. Skrip yang memakai sintaks khas bash akan bermasalah di sini.
  3. #!/usr/bin/env bash: mencari bash lewat PATH. Berguna pada sistem yang menaruh bash di luar /bin, misalnya macOS dengan bash versi baru hasil pemasangan sendiri.

Bila baris shebang tidak ditulis sama sekali, skrip tetap bisa berjalan, tetapi penerjemahnya ditentukan oleh keadaan saat itu, bukan oleh Anda. Menuliskannya adalah cara termurah menghindari kejutan.

Anatomi berkas bash script: baris #!/bin/bash menentukan penerjemahnya, disusul komentar, variabel, lalu perintah.Anatomi berkas bash script: baris #!/bin/bash menentukan penerjemahnya, disusul komentar, variabel, lalu perintah.

Tiga Cara Menjalankan Skrip dan Perbedaan Hasilnya

Sebuah skrip bernama cadangan.sh bisa dijalankan dengan tiga cara, dan ketiganya memberi hasil berbeda.

Cara pertama, memanggil berkasnya langsung. Cara ini membutuhkan bit eksekusi. Tanpa bit tersebut, permintaannya ditolak:

Bash
./cadangan.sh
TEXT
bash: ./cadangan.sh: Permission denied

Kode status yang dikembalikan adalah 126, yang berarti berkasnya ditemukan tetapi tidak boleh dijalankan. Perbaikannya satu baris dengan chmod u+x, dan seluk-beluk angka izinnya dibahas terpisah di artikel chmod dan arti angka 755 serta 644.

Cara kedua, menyerahkan berkasnya kepada bash. Bit eksekusi tidak diperlukan, karena yang dijalankan sistem adalah bash, sementara skripnya sekadar dibaca sebagai teks masukan:

Bash
bash cadangan.sh

Perlu diperhatikan, cara ini juga mengabaikan baris shebang. Apa pun isi shebang-nya, yang menjalankan tetap bash.

Cara ketiga, memuat isinya ke shell yang sedang berjalan. Perintah source tidak membuat proses baru. Akibatnya, variabel yang dibuat di dalam skrip tetap ada setelah skrip selesai:

Bash
source pengaturan.sh

Perbedaannya terlihat jelas bila diuji. Dengan berkas berisi PROYEK="toko-online", hasil kedua cara berbeda:

TEXT
setelah bash  : [kosong]
setelah source: [toko-online]

Karena itu berkas pengaturan lingkungan dimuat dengan source, sedangkan skrip pekerjaan dijalankan dengan dua cara pertama.

Tiga cara menjalankan bash script: ./skrip.sh butuh bit eksekusi, bash skrip.sh abaikan shebang, source simpan variabel.Tiga cara menjalankan bash script: ./skrip.sh butuh bit eksekusi, bash skrip.sh abaikan shebang, source simpan variabel.

Contoh Bash Script untuk Pekerjaan Sehari-hari

Cara tercepat memahami bash script adalah membaca skrip yang memang mengerjakan sesuatu. Tiga contoh berikut sudah diuji dan bisa Anda sesuaikan.

Pertama, mencadangkan folder dengan nama bertanggal. Skrip ini memampatkan satu direktori menjadi arsip yang namanya memuat tanggal hari itu, sehingga cadangan kemarin tidak tertimpa:

Bash
#!/bin/bash
set -euo pipefail

SUMBER="/var/www/situs"
TUJUAN="/backup"
TANGGAL=$(date +%F)
NAMA="situs-${TANGGAL}.tar.gz"

tar -czf "${TUJUAN}/${NAMA}" -C "$SUMBER" .
echo "Tersimpan: ${TUJUAN}/${NAMA}"

Dua hal baru muncul di sini. TANGGAL=$(date +%F) menyimpan keluaran sebuah perintah ke dalam variabel, dan +%F menghasilkan format 2026-08-26. Sementara ${TUJUAN}/${NAMA} menggabungkan dua variabel, dengan kurung kurawal yang menegaskan di mana nama variabel berakhir.

Kedua, memeriksa layanan yang mati. Contoh ini memperkenalkan percabangan:

Bash
#!/bin/bash
LAYANAN="nginx"

if pgrep -x "$LAYANAN" > /dev/null; then
    echo "$LAYANAN berjalan normal."
else
    echo "$LAYANAN mati, dinyalakan."
    systemctl start "$LAYANAN"
fi

Perhatikan bahwa if di bash tidak menguji benar atau salah, melainkan menguji kode status. Perintah pgrep mengembalikan 0 bila prosesnya ditemukan, dan angka itulah yang dibaca if. Pengalihan > /dev/null dipakai supaya nomor prosesnya tidak ikut tercetak.

Ketiga, mengganti nama berkas secara massal. Contoh ini memperkenalkan perulangan:

Bash
#!/bin/bash
set -euo pipefail

for berkas in foto/*.JPG; do
    baru="${berkas%.JPG}.jpg"
    mv -- "$berkas" "$baru"
    echo "$berkas -> $baru"
done

Bagian ${berkas%.JPG} memotong akhiran .JPG dari nilai variabel, lalu .jpg ditempelkan sebagai gantinya. Tanda -- memberi tahu mv bahwa argumen sesudahnya adalah nama berkas, bukan opsi, sehingga berkas yang namanya diawali tanda hubung tetap aman.

Ketiga contoh di atas masih memakai nilai yang ditulis langsung di dalam berkas. Agar sebuah skrip bisa dipakai untuk folder mana pun, nilainya diambil dari argumen yang Anda ketikkan setelah nama skrip. Argumen pertama tersimpan di $1:

Bash
#!/bin/bash
set -euo pipefail

SUMBER="${1:?folder belum diisi}"
echo "Mencadangkan $SUMBER"

Tanda :? membuat skrip berhenti dengan pesan tersebut bila argumennya lupa diisi. Pemanggilannya menjadi ./cadangan.sh /var/www/situs. Bila masukan justru perlu diminta di tengah jalan, perintah read menyimpan ketikan pengguna ke sebuah variabel.

Contoh bash script dijalankan: ditolak Permission denied, diperbaiki dengan chmod u+x, hingga cadangan tersimpan.Contoh bash script dijalankan: ditolak Permission denied, diperbaiki dengan chmod u+x, hingga cadangan tersimpan.

Ketiga skrip di atas menjadi jauh lebih berguna bila dijalankan otomatis pada jadwal tertentu. Penjadwalnya sudah tersedia di setiap server Linux, dan caranya dibahas di artikel cron job beserta arti lima kolom waktunya.

Kenapa Skrip yang Sama Gagal di Server Padahal Jalan di Laptop

Inilah keluhan yang paling sering muncul, dan penyebabnya hampir selalu sama: skrip Anda dijalankan oleh shell yang berbeda dari yang Anda kira.

Sejak Debian Squeeze, /bin/sh pada Debian tidak lagi menunjuk bash, melainkan dash (shell ringan yang hanya mendukung sintaks standar POSIX). Ubuntu mendahuluinya sejak versi 6.10 pada Oktober 2006. Alasannya kecepatan, karena dash jauh lebih ringan saat menjalankan ratusan skrip sistem ketika komputer menyala.

Akibatnya, skrip yang shebang-nya #!/bin/sh diserahkan kepada dash, dan dash menolak sintaks khas bash. Pengujian langsung terhadap dash memperlihatkan penolakan yang tegas:

Bash
source /dev/null
echo $((2**10))
echo -e "a\tb"

Ketiganya berjalan normal di bash. Di dash, baris pertama dibalas source: not found, baris kedua dibalas arithmetic expression: expecting primary, dan baris ketiga mencetak -e sebagai teks biasa alih-alih memprosesnya. Karena itu printf lebih aman dipakai daripada echo -e.

Penolakan seperti itu justru bentuk yang paling ramah, karena Anda langsung tahu ada yang salah. Yang berbahaya adalah sintaks yang tidak ditolak sama sekali. Perluasan kurung kurawal termasuk di antaranya. Dua skrip berikut isinya identik, hanya shebang-nya yang berbeda:

Bash
#!/bin/dash
for i in {1..3}; do
    echo "membuat cadangan-$i"
done

Versi dash mencetak satu baris saja, dengan kurung kurawalnya utuh sebagai teks, lalu selesai dengan kode status 0:

TEXT
membuat cadangan-{1..3}

Versi bash mencetak tiga baris seperti yang diharapkan. Bedanya, versi dash tidak mengeluarkan pesan galat apa pun dan melapor berhasil. Sebuah skrip pencadangan dengan pola seperti ini akan membuat satu berkas bernama harfiah cadangan-{1..3}, lalu menyatakan pekerjaannya selesai. Kesalahannya baru ketahuan saat cadangan itu dibutuhkan.

Sintaks bash script di shell dash: source dan 2**10 ditolak dengan pesan galat, sedangkan {1..3} lolos diam-diam.Sintaks bash script di shell dash: source dan 2**10 ditolak dengan pesan galat, sedangkan {1..3} lolos diam-diam.

Isi /bin/sh berbeda-beda antar distribusi, jadi memeriksanya lebih dapat diandalkan daripada menebak. Dua perintah ini menjawabnya di server mana pun:

Bash
ls -l /bin/sh
bash --version

Penjadwal cron memiliki persoalan serupa karena menjalankan perintah lewat /bin/sh. Cara mengatasinya sudah dibahas di artikel cron job, dan perbedaan bawaan antar-distribusi sendiri diuraikan di artikel distro Linux.

Bash 3.2 di macOS dan Sintaks yang Belum Ada di Sana

Persoalan yang sama muncul dari arah berbeda bagi pembaca yang belajar dari MacBook. Versi bash bawaan macOS sangat tertinggal:

TEXT
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin25)
Copyright (C) 2007 Free Software Foundation, Inc.

Angka hak ciptanya bukan salah ketik. Bash bawaan macOS memang berhenti di versi rilisan 2007, dan keterangan di atas diambil dari macOS keluaran Agustus 2026. Penyebabnya bukan kelalaian, melainkan lisensi: bash 4.0 ke atas memakai GPLv3, yang tidak dipakai Apple. Sejak macOS Catalina pada 2019, shell default pun berpindah ke zsh.

Akibatnya, sintaks yang lazim dipakai sejak bash 4.0 ditolak di sana:

TEXT
/bin/bash: ${x,,}: bad substitution
/bin/bash: line 0: declare: -A: invalid option

Baris pertama adalah pengubah huruf menjadi kecil, baris kedua adalah associative array (larik berindeks teks). Keduanya berjalan normal di server Linux mana pun yang memakai bash 4 ke atas. Jadi bila sebuah tutorial gagal Anda ikuti di Mac padahal perintahnya sudah benar, periksa dulu versi bash-nya sebelum mencari kesalahan di tempat lain. Bash versi baru bisa dipasang terpisah, dan setelah itu shebang #!/usr/bin/env bash menjadi pilihan yang lebih aman daripada #!/bin/bash.

Empat Baris Pengaman yang Sebaiknya Ada di Setiap Skrip

Perilaku bawaan bash cenderung memaafkan kesalahan, dan sifat itu berbahaya untuk skrip yang menyentuh berkas. Empat kebiasaan berikut menutup sebagian besar risikonya.

  1. set -e menghentikan skrip saat ada perintah gagal: tanpa ini, skrip meneruskan langkah berikutnya walaupun langkah sebelumnya gagal.
  2. set -u menolak variabel yang belum diisi: tanpa ini, variabel kosong diperlakukan sebagai teks kosong tanpa keluhan.
  3. set -o pipefail membaca kegagalan di tengah pipa: tanpa ini, hasil false | echo "selesai" dianggap berhasil dengan kode status 0. Dengan pipefail, kode statusnya menjadi 1.
  4. Tanda kutip pada setiap variabel: tanpa kutip, nilai yang mengandung spasi pecah menjadi beberapa argumen.

Ketiga opsi pertama biasa ditulis sebagai satu baris set -euo pipefail tepat di bawah shebang.

Pengaman bash script: set -e berhenti saat gagal, set -u tolak variabel kosong, pipefail baca pipa, dan kutip jaga spasi.Pengaman bash script: set -e berhenti saat gagal, set -u tolak variabel kosong, pipefail baca pipa, dan kutip jaga spasi.

Poin kedua layak diperjelas, karena akibatnya bisa sangat mahal. Tanpa set -u, variabel TARGET yang kosong membuat "/$TARGET" menyusut menjadi / begitu saja:

TEXT
$ echo "Menghapus /$TARGET"
Menghapus /

$ set -u; echo "Menghapus /$TARGET"
bash: TARGET: unbound variable

Pola inilah yang menghapus seluruh berkas sebagian pengguna Steam di Linux pada Januari 2015. Skrip peluncurnya memuat baris rm -rf "$STEAMROOT/"*, dan ketika $STEAMROOT kebetulan kosong, perintah itu berubah menjadi penghapusan menyeluruh dari direktori akar.

Poin keempat sama pentingnya. Berkas bernama laporan akhir.txt yang dihapus tanpa tanda kutip menghasilkan dua galat yang menunjuk berkas yang tidak pernah diminta:

TEXT
$ f="laporan akhir.txt"; rm $f
rm: laporan: No such file or directory
rm: akhir.txt: No such file or directory

Satu catatan jujur soal set -e: ia tidak sekuat kelihatannya. Perintah yang gagal di dalam if, atau yang diikuti ||, tidak menghentikan skrip. Karena itu pemeriksaan kode status secara eksplisit tetap dibutuhkan untuk langkah yang benar-benar kritis.

Sebelum menjalankan skrip yang menghapus atau menimpa berkas, jalankan versi ujinya lebih dulu dengan mengganti perintah berbahaya menjadi echo. Anda akan melihat persis perintah apa yang akan dijalankan, tanpa satu pun berkas tersentuh.

Untuk memeriksa kesalahan yang lolos dari mata, tersedia ShellCheck, penganalisis statis khusus skrip shell. Alat ini menandai pengutipan yang terlewat, variabel yang salah tulis, dan sintaks yang tidak portabel. Panduan gaya shell milik Google menyarankannya untuk semua skrip, sekecil apa pun.

Kelemahan Bash Script dan Kapan Sebaiknya Pindah ke Python

Bash sangat kuat untuk merangkai perintah, dan justru lemah begitu Anda mulai mengolah data. Lima keterbatasannya perlu diketahui sejak awal.

  1. Hanya mengenal teks: bash tidak punya tipe angka, tanggal, atau objek. Semuanya teks, dan perhitungan memerlukan sintaks khusus yang kaku.
  2. Struktur data sangat terbatas: larik satu dimensi adalah batasnya, dan larik berindeks teks baru tersedia sejak bash 4.
  3. Pesan galatnya tidak membantu: syntax error near unexpected token sering menunjuk baris yang bukan sumber persoalan sebenarnya.
  4. Aturan pengutipan mudah menjebak: satu tanda kutip yang terlewat mengubah arti perintah tanpa memunculkan galat.
  5. Sulit diuji: tidak ada kerangka pengujian bawaan, sehingga menguji satu bagian kecil berarti menjalankan seluruh skrip.

Kapan sebaiknya berhenti? Panduan gaya shell milik Google memberi ambang yang konkret. Begitu skrip melewati 100 baris, atau alur logikanya tidak lagi lurus, tulis ulang dalam bahasa yang lebih terstruktur sekarang juga. Angka itu pantas dijadikan pegangan.

Penggantinya yang paling lazim adalah Python, yang tersedia di hampir semua distribusi Linux. Namun perlu ditegaskan, Python bukan pengganti bash untuk semua hal. Untuk merangkai lima perintah sistem secara berurutan, bash tetap lebih ringkas dan tidak membutuhkan pustaka tambahan. Pembagian yang wajar: bash untuk merangkai perintah, Python untuk mengolah isinya.

Keamanan Bash Script yang Sering Diabaikan

Skrip berjalan dengan hak pengguna yang menjalankannya, dan itu berarti skrip yang dijalankan root dapat melakukan apa pun. Tiga kebiasaan berikut layak diperbaiki.

Pertama, pola curl … | bash. Banyak panduan pemasangan menyarankan mengunduh skrip lalu langsung menjalankannya dalam satu baris. Cara ini praktis, tetapi berarti Anda menjalankan kode yang belum pernah Anda lihat. Unduh dulu ke berkas, baca isinya, baru jalankan. Bahasan lengkapnya ada di artikel curl.

Kedua, kata sandi di dalam skrip. Berkas skrip berizin 644 dapat dibaca semua pengguna di server yang sama. Simpan kredensial di berkas terpisah berizin 600, lalu muat dengan source.

Ketiga, anggapan bahwa perangkat lunak tua otomatis matang. Bash sudah berumur puluhan tahun. Meski begitu, pada 24 September 2014 diumumkan celah Shellshock (CVE-2014-6271) yang memungkinkan penyerang menjalankan perintah dari jarak jauh lewat variabel lingkungan. Skornya 10,0 pada skala CVSS versi 2, nilai tertinggi yang mungkin, dan tambalan pertamanya bahkan belum menutup seluruh celah. Memperbarui bash bukan pekerjaan opsional.

Skrip yang menyentuh layanan sistem seperti systemctl juga membutuhkan hak akses penuh ke shell. Hak semacam itu tersedia pada VPS, sementara pada hosting bersama kemampuannya dibatasi pada berkas milik akun Anda sendiri. Untuk masuk ke servernya, SSH adalah jalur standarnya.

Pertanyaan yang Sering Muncul

Apa arti bash?

Bash artinya Bourne Again SHell, plesetan dari nama Bourne shell yang lebih dulu ada. Bash adalah program shell yang menerjemahkan perintah yang Anda ketik menjadi tindakan sistem, sekaligus menjalankan berkas skrip berisi rangkaian perintah.

Apa bedanya bash script dan shell script?

Shell script adalah istilah umum untuk skrip yang dijalankan shell apa pun, sedangkan bash script adalah shell script yang secara khusus ditujukan untuk bash. Semua bash script termasuk shell script, tetapi tidak sebaliknya. Skrip yang ditulis untuk sh tidak boleh memakai sintaks khas bash.

Apakah bash script sama dengan bahasa pemrograman?

Bash memiliki variabel, percabangan, perulangan, dan fungsi, sehingga secara teknis memenuhi syarat sebagai bahasa pemrograman. Perbedaannya terletak pada tujuan. Bash dirancang untuk menjalankan program lain, bukan untuk membangun aplikasi, dan kemampuannya mengolah data sangat terbatas.

Bagaimana cara menghentikan bash script yang sedang berjalan?

Tekan Ctrl + C untuk menghentikan skrip yang berjalan di terminal Anda. Untuk skrip yang berjalan di latar belakang, cari nomor prosesnya dengan pgrep -f nama-skrip.sh, lalu hentikan dengan kill <nomor>. Di dalam skrip sendiri, perintah exit menghentikan jalannya dan exit 1 sekaligus menandakan kegagalan.

Apakah bash script bisa dijalankan di Windows?

Tidak secara langsung, karena Windows memakai penerjemah perintahnya sendiri seperti CMD dan PowerShell. Bash tersedia lewat Windows Subsystem for Linux atau Git Bash. Di Android, Termux menyediakan bash tanpa akses root.

Apakah file bash script harus berekstensi .sh?

Tidak wajib. Sistem menentukan penerjemah dari baris shebang, bukan dari ekstensi. Ekstensi .sh dipakai sebagai penanda bagi manusia. Panduan gaya shell milik Google bahkan menyarankan berkas yang dijalankan langsung boleh tanpa ekstensi, sementara berkas pustaka yang dimuat dengan source sebaiknya memakai .sh.

Kesimpulan

Bash script adalah berkas teks berisi perintah yang dijalankan bash secara berurutan, dan nilainya terletak pada kemampuan mengulang pekerjaan yang sama tanpa kesalahan urutan. Dasarnya cukup sedikit: variabel, percabangan if yang membaca kode status, dan perulangan for sudah menutup sebagian besar kebutuhan sehari-hari.

Satu hal yang paling sering menjadi sumber persoalan adalah anggapan bahwa skrip berjalan sama di mana pun. Kenyataannya, yang menentukan adalah baris shebang, versi bash di sistem tersebut, dan cara skrip dipanggil. Biasakan menuliskan shebang secara eksplisit, memasang set -euo pipefail di barisnya sendiri, dan memberi tanda kutip pada setiap variabel. Bila skrip Anda melewati 100 baris, itu pertanda pekerjaannya sudah lebih cocok diserahkan kepada bahasa lain. Semoga artikel ini membantu.