Memahami variabel khusus dan lingkungan di Bash sangat penting untuk menulis skrip yang efisien dan dapat diandalkan. Variabel ini membantu mengakses informasi penting seperti nama skrip, status keluar perintah, serta data pengguna tanpa perlu hard-code nilai yang rawan berubah.
Variabel khusus (Special Parameters) di Bash digunakan untuk tujuan tertentu dan jumlahnya tidak banyak. Salah satu variabel utama adalah $0, yang mengembalikan path relatif dari skrip yang dijalankan. Misalnya, $0 membantu menampilkan nama skrip di menu bantuan. Namun, $0 terkadang tidak dapat diandalkan, terutama saat menggunakan perintah source. Sebagai alternatif, $BASH_SOURCE lebih stabil untuk mendapatkan path skrip dalam Bash, meskipun tidak portabel ke shell lain.
Setiap program di Bash mengembalikan kode keluar (exit status) yang memberikan informasi keberhasilan atau kegagalan suatu perintah. Kode 0 menandakan keberhasilan, sementara nilai lain mengindikasikan kesalahan. Variabel $? menyimpan exit status terakhir yang dijalankan, sangat berguna untuk pengkondisian dalam skrip seperti berikut:
- Memeriksa keberhasilan perintah secara eksplisit menggunakan
if [[ $? -eq 0 ]]; then ... fi. - Menggunakan
caseuntuk menangani berbagai nilai exit code sesuai program. - Memanfaatkan pendekatan lebih sederhana menggunakan logika
if ls /path; then ... fi. - Menggunakan operator logika
&&dan||untuk eksekusi kondisional berdasarkan keberhasilan atau kegagalan perintah.
Argumen yang diterima skrip juga disimpan dalam variabel posisi seperti $1, $2, dan seterusnya. Untuk mengakses semua argumen sekaligus, $@ menyediakan daftar argumen sebagai array, sedangkan $* menggabungkannya menjadi satu string. Contoh praktis penggunaan argumen adalah sebagai berikut:
foo() { echo "$1"; echo "$2"; }untuk mengakses argumen pertama dan kedua.- Iterasi seluruh argumen menggunakan
for arg in "$@"; do echo "$arg"; done. - Mengetahui jumlah argumen dengan
${#@}atau${#*}.
Variabel lingkungan (Environment Variables) memudahkan skrip untuk memperoleh informasi sistem dan pengguna. Contoh penting termasuk $HOME yang menunjuk ke direktori home pengguna saat ini. Variabel $UID dan $EUID sering digunakan untuk mendapatkan ID pengguna sebenarnya dan ID pengguna efektif dari proses berjalan. Meskipun biasanya keduanya sama, perbedaan muncul saat menggunakan setuid atau sudo, di mana $EUID menunjukkan hak akses yang sedang efektif, sering digunakan untuk memeriksa apakah skrip berjalan dengan hak root.
Penggunaan direktori standar untuk konfigurasi dan data aplikasi dianjurkan melalui spesifikasi XDG dari freedesktop.org, yang mendefinisikan variabel seperti:
XDG_CACHE_HOMEuntuk penyimpanan data semi-temporal (default:$HOME/.cache).XDG_CONFIG_HOMEsebagai lokasi konfigurasi (default:$HOME/.config).XDG_DATA_HOMEuntuk data aplikasi yang diunduh atau disimpan (default:$HOME/.local/share).
Skrip sebaiknya menggunakan cara ekspor variabel dengan default jika belum diatur agar tetap kompatibel, contoh:
export "${XDG_CACHE_HOME:=$HOME/.cache}".
Penggunaan variabel ini menghindarkan hard-coding yang berisiko menyebabkan skrip rusak ketika struktur sistem file atau lingkungan berubah. Para ahli menyarankan agar skrip mengambil sebanyak mungkin informasi dari variabel standar ini agar mudah dikelola dan lebih stabil, terutama saat jumlah skrip mencapai ratusan.
Pada akhirnya, pemahaman terhadap variabel khusus dan lingkungan di Bash meningkatkan kualitas scripting dengan membuat skrip lebih portabel, dinamis, dan mudah dipelihara. Memanfaatkan variabel standar ini merupakan praktik terbaik yang sangat dianjurkan bagi pengguna Bash di segala level.
