Sebelum menulis baris BASH pertama, ada beberapa skill dasar dan tools yang perlu kalian siapkan: penguasaan perintah dasar Linux CLI, pemilihan environment belajar (Linux native, WSL2, atau macOS), editor dengan ShellCheck, hingga verifikasi bahwa interpreter BASH berjalan dengan baik.

Selamat datang di series Belajar BASH Scripting! Series ini akan membawa kalian dari nol hingga siap menulis skrip otomasi production-grade: mulai dari prasyarat dan setup environment, sejarah shell, variabel & environment variables, quoting & word splitting, globbing, aritmatika, kondisional & regex, perulangan, fungsi, array indexed & asosiatif, parameter expansion, command substitution & heredoc, error handling & strict mode, trap & signal, debugging, CLI profesional dengan getopts, integrasi sed/awk/curl/jq, logging & colorizing, ShellCheck & Bats-core, hingga studi kasus otomasi server sungguhan. Total 27 episode yang akan mengubah kalian dari sekadar "pengetik perintah" menjadi orang yang membuat sistem bekerja sendiri.
Mengapa BASH begitu penting? Karena BASH adalah lem perekat dunia server Linux. Bayangkan sebuah server adalah pabrik: aplikasi, database, dan web server adalah mesin-mesinnya. Tanpa BASH, setiap pengecekan log, setiap backup, setiap pembersihan disk, dan setiap deployment harus dilakukan manual — klik, ketik, ulangi ratusan kali. Dengan BASH, kalian menulis satu skrip yang melakukan semuanya, dijadwalkan berjalan sendiri, dan diam-diam menjaga pabrik tetap hidup. Seorang DevOps Engineer yang tidak bisa scripting seperti mekanik yang hanya punya kunci pas satu ukuran: bisa bekerja, tapi tidak pernah efisien.
Episode 0 ini adalah peta jalan. Kita akan memastikan tiga hal sebelum berangkat: (1) skill dasar yang wajib kalian miliki, (2) environment yang paling cocok untuk belajar, dan (3) tools serta verifikasi bahwa interpreter BASH berjalan sempurna. Setelah episode ini selesai, kalian sudah berdiri kokoh di pintu masuk — siap melangkah ke episode 1 yang membahas sejarah dan mengapa BASH menjadi standar dunia Linux.
Percayalah, masalah terbesar pemula BASH bukanlah sintaks if atau for — melainkan dasar Linux yang belum kuat. BASH scripting adalah merangkai perintah Linux menjadi otomatis. Jika perintahnya sendiri belum kalian pahami, yang kalian rangkai hanyalah mantra tanpa makna.
BASH script hampir selalu berurusan dengan file dan direktori: membaca konfigurasi, memindahkan log, memproses output. Kalian wajib nyaman "berjalan" di dalam filesystem. Kalian harus paham perbedaan path absolut (/var/log/nginx/access.log) dan path relatif (../config/app.conf), serta arti tanda ~ (home user) dan cd - (kembali ke direktori sebelumnya). Bayangkan filesystem adalah gudang; kalian harus tahu di mana barang-barang diletakkan sebelum bisa mengaturnya.
Berikut perintah yang akan kalian temui di hampir setiap skrip:
| Perintah | Fungsi | Analogi |
|---|---|---|
cd | Berpindah direktori | Berjalan ke ruangan lain |
ls | Menampilkan isi direktori | Membuka pintu dan melihat isi kamar |
cp | Menyalin file/folder | Memfotokopi dokumen |
mv | Memindahkan / mengganti nama | Memindahkan file dari meja ke rak |
rm | Menghapus file/folder | Menghancurkan dokumen (tanpa keranjang sampah!) |
chmod | Mengubah permission eksekusi | Memberi izin orang untuk menjalankan skrip |
cat | Membaca isi file | Membuka dokumen dan membacanya |
grep | Menyaring baris yang cocok pola | Mencari kata kunci dalam ribuan baris laporan |
Jangan bingung — kalian tidak perlu menghafal semua opsi. Yang penting kalian pernah memakai dan paham fungsinya, karena BASH hanyalah otomatisasi dari perintah-perintah ini. Ketika kalian menulis cp -r /etc/nginx /backup/nginx di dalam skrip, kalian tidak sedang belajar hal baru — kalian sedang mengetik ulang hal yang biasa kalian lakukan di terminal.
BASH script adalah file teks biasa — tidak ada magic di dalamnya. Karena itu kalian butuh editor yang nyaman untuk menulis teks. Dua opsi terpopuler:
Ctrl+O simpan, Ctrl+X keluar.Jika kalian lebih nyaman dengan GUI, VS Code dengan fitur remote editing (SSH ke server atau membuka folder WSL) juga sangat umum dipakai di dunia DevOps. Mana pun yang kalian pilih, yang penting konsisten — karena di semua episode series ini, kalian akan terus menulis skrip di editor tersebut.
Ini bukan skill teknis, tapi penentu segalanya. Pesan error BASH seperti command not found, Permission denied, atau syntax error: unexpected end of file selalu mengandung petunjuk — baca dulu sebelum bertanya ke Google. Demikian juga kebiasaan membuka man bash atau help saat bingung. Rasa malas membaca error adalah musuh terbesar setiap calon script-writer.
Tip
Biasakan eksperimen di environment yang aman. Buat folder latihan khusus, misalnya ~/lab, dan bebas merusak apa pun di dalamnya. Skrip yang salah bisa menghapus file — di folder latihan kalian belajar dari kesalahan tanpa kehilangan data penting.
BASH berjalan di mana pun ada sistem Unix-like. Kalian punya tiga pilihan utama, masing-masing dengan trade-off:
| Environment | Kelebihan | Kekurangan | Cocok Untuk |
|---|---|---|---|
| Linux native | Pengalaman paling otentik; persis server produksi | Perlu install Linux (VM/dual boot) | Yang ingin serius jadi admin/DevOps |
| WSL2 (Windows) | Kernel Linux asli di Windows; tanpa install ulang | Filesystem berlapis, sedikit "setengah-setengah" | Pengguna Windows yang tidak mau pindah |
| macOS Terminal | Unix-native sejak lahir (berbasis BSD) | BASH bawaan masih versi 3 di macOS lama | Pengguna Mac yang ingin praktik cepat |
Pilihan environment tidak menentukan kualitas kalian — BASH adalah BASH di semua platform. Namun ada satu catatan penting: versi BASH. Skrip yang ditulis untuk BASH 5 bisa saja gagal di BASH 3, dan sebaliknya. Pastikan environment kalian memiliki BASH 4.0+, idealnya 5.0+.
Important
Untuk series ini, rekomendasi paling seimbang adalah Linux native (VM dengan Ubuntu Server 24.04 LTS) atau WSL2 jika kalian di Windows. Keduanya membawa BASH 5.0+ dan persis meniru environment server produksi yang akan kalian kelola sebagai DevOps Engineer. macOS tetap boleh, asalkan cek dulu versi BASH-nya (nanti kita verifikasi).
/bin/bashYang paling mendasar: pastikan ada file /bin/bash. Di hampir semua distro Linux dan macOS, file ini sudah ada. Ia adalah "mesin" yang membaca dan menjalankan skrip kalian — setara dengan runtime di bahasa lain. Kita akan membedahnya lebih dalam di episode 2 (shebang dan mode eksekusi).
VS Code bukan keharusan, tapi dua extension ini akan menyelamatkan kalian dari banyak kesalahan yang akan kita bahas di episode-episode berikutnya:
| Extension | Fungsi |
|---|---|
| ShellCheck | Linter BASH: menandai bug potensial (variable yang tidak di-quote, sintaks aneh, dan lain-lain) tepat saat kalian mengetik |
| Bash IDE | IntelliSense, dokumentasi, dan navigasi kode untuk BASH |
ShellCheck terutama penting karena ia mengajarkan mengapa sebuah pola salah — persis seperti spell-checker yang menjelaskan tata bahasa. Ia akan jadi "guru diam-diam" kalian sepanjang series ini.
Note
ShellCheck juga bisa dijalankan dari terminal tanpa VS Code: cukup shellcheck namaskrip.sh. Bahkan di CI/CD, skrip yang lolos shellcheck adalah tanda kualitas. Kita akan membahasnya secara mendalam di episode-episode akhir series.
Saatnya memastikan semua siap. Buka terminal kalian dan jalankan:
bash --version
which bash
echo $BASH_VERSIONGNU bash, version 5.2.21(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2022 Free Software Foundation, Inc.
/usr/bin/bash
5.2.21(1)-releasePenjelasan tiga baris di atas:
| Perintah | Fungsi |
|---|---|
bash --version | Menampilkan versi interpreter BASH |
which bash | Menunjukkan lokasi binary bash (harus /bin/bash atau /usr/bin/bash) |
echo $BASH_VERSION | Menampilkan versi dari variabel internal BASH |
Jika output kalian menunjukkan versi 4.x atau 5.x, kalian siap. Jika masih 3.x, perbarui sistem kalian (sudo apt update && sudo apt upgrade di Ubuntu) atau install ulang environment.
Versi BASH menentukan fitur yang tersedia. Dua fitur paling berpengaruh: associative array (array dengan key berupa string — hadir sejak BASH 4) dan globstar (** untuk pencocokan direktori bertingkat — hadir sejak BASH 4). BASH 5 menambahkan beberapa perbaikan, termasuk mekanisme BASH_XTRACEFD untuk debugging yang lebih bersih.
| Fitur | BASH 3.x | BASH 4.x | BASH 5.x |
|---|---|---|---|
Associative array (declare -A) | Tidak ada | Ada | Ada |
Globstar (**) | Tidak ada | Ada | Ada |
mapfile/readarray | Tidak ada | Ada | Ada |
Case-modifying expansion (${var,,}) | Tidak ada | Ada | Ada |
$EPOCHREALTIME | Tidak ada | Tidak ada | Ada |
| Perbaikan debugging & pipeline | Terbatas | Sedang | Lengkap |
Skrip yang memakai associative array akan gagal total dengan error declare: -A: invalid option di BASH 3. Karena itulah, jika kalian menulis skrip yang harus berjalan di server macam-macam versi, selalu cek kompatibilitas — topik yang akan kita bahas di episode tentang portabilitas.
shopt -s globstar
declare -A mymap
mymap[ops]="production"
echo "Versi: $BASH_VERSION"Jika tiga baris pertama berjalan tanpa error, environment kalian mendukung fitur modern. Output terakhir akan menunjukkan versi BASH kalian.
Warning
macOS (sebelum Catalina) membawa BASH 3.2 secara default — versi yang tidak mendukung associative array dan globstar. Jika kalian belajar di macOS, install BASH modern dengan Homebrew: brew install bash, lalu gunakan /opt/homebrew/bin/bash di shebang skrip kalian.
Sekarang mari rangkai semuanya. Buat file bernama hello-setup.sh di folder latihan kalian, isikan skrip berikut, lalu jalankan:
#!/bin/bash
echo "Hello, BASH Scripting!"
echo "User saat ini : $USER"
echo "Home directory : $HOME"
echo "Shell saat ini : $SHELL"
echo "Versi BASH : $BASH_VERSION"
echo "Direktori aktif: $PWD"bash hello-setup.shHello, BASH Scripting!
User saat ini : arman
Home directory : /home/arman
Shell saat ini : /usr/bin/bash
Versi BASH : 5.2.21(1)-release
Direktori aktif: /home/arman/labPerhatikan: di skrip ini kita baru memakai variabel bawaan ($USER, $HOME, $SHELL, $BASH_VERSION, $PWD). Kalian belum perlu memahaminya sepenuhnya — episode 3 akan membedah variabel dan environment variables secara menyeluruh. Yang penting saat ini: skrip berjalan, output benar, environment siap. Jika kalian melihat versi BASH 4.x/5.x dan semua baris tercetak, kalian resmi siap memulai perjalanan ini.
BASH versi lama. Fitur modern gagal misterius di BASH 3.x. Selalu cek $BASH_VERSION dan pastikan 4.0+ (ideal 5.x).
Editor Windows yang mengubah baris. Notepad dan editor Windows menulis akhir baris sebagai CRLF, sedangkan Linux memakai LF. Akibatnya skrip error $'\r': command not found. Solusi: gunakan editor yang mendukung LF (VS Code, nano, vim) atau konversi dengan sed -i 's/\r$//' skrip.sh.
Terlalu cepat menulis skrip tanpa dasar CLI. Jika kalian masih sering bingung dengan ls, cp, dan grep, perkuat dulu dasar terminal sebelum menulis skrip. BASH adalah otomasi — dasar yang goyah membuat skrip ikut goyah.
Mengabaikan pesan error. command not found pada baris ke-3 artinya perintah di baris itu tidak dikenal — bukan misteri. Baca pesannya, cocokkan dengan nomor baris, dan perbaiki.
Tidak pernah praktik mengetik. Membaca tutorial tanpa mengetik sendiri seperti menonton video renang tanpa masuk kolam. Setiap episode, ketik ulang semua contoh — kesalahan yang kalian buat saat mengetik adalah guru terbaik.
Di episode 0 ini kalian telah memastikan tiga fondasi: skill dasar Linux CLI (navigasi filesystem, perintah inti cd, ls, cp, mv, rm, chmod, cat, grep, dan kenyamanan dengan text editor), environment belajar yang tepat (Linux native, WSL2, atau macOS dengan BASH 4.0+/5.0+), serta tools dan verifikasi bahwa interpreter BASH berjalan dengan baik melalui bash --version dan skrip uji pertama.
Poin yang harus kalian bawa:
bash --version dan $BASH_VERSION.Ingat, series Belajar BASH Scripting terdiri dari 27 episode yang saling membangun: dari sejarah shell, variabel, quoting, globbing, kontrol flow, fungsi, array, parameter expansion, hingga error handling dan otomasi production-grade. Episode 0 ini adalah batu bata pertama dari bangunan itu — dan kalian baru saja meletakkannya dengan sempurna. Di episode 1 selanjutnya kita akan mundur sejenak untuk memahami sejarah, latar belakang, dan mengapa BASH menjadi standar dunia Linux — mulai dari Bourne Shell tahun 1979, kelahiran BASH di tangan Brian Fox tahun 1989, hingga posisi BASH sebagai jembatan yang menghubungkan hampir seluruh server di internet. Sampai jumpa di episode 1, dan selamat menulis baris perintah pertama kalian!