Pengenalan Shell
Dasar-dasar shell dan environment di sistem Unix-like
Apa itu Shell
- Program yang menerjemahkan perintah pengguna ke instruksi sistem
- Antarmuka antara user dan kernel sistem operasi
- Shell populer: Bash, Zsh, Fish, sh
Shebang
- Baris pertama script yang menentukan interpreter
- Wajib ada di setiap executable script
#!/bin/bash
#!/bin/sh
#!/usr/bin/env bashMembuat Script Executable
# Buat file script
cat > hello.sh << 'EOF'
#!/bin/bash
echo "Hello, World!"
EOF
# Beri izin execute
chmod +x hello.sh
# Jalankan
./hello.shMenjalankan Script
# Cara 1: execute langsung (memerlukan shebang dan permission)
./script.sh
# Cara 2: lewat interpreter
bash script.sh
sh script.sh
# Cara 3: source (berjalan di shell saat ini, membagikan environment)
source script.sh
. script.shEnvironment Variable Penting
$HOME # Direktori home user
$PATH # Daftar direktori untuk mencari executable
$SHELL # Path shell yang sedang digunakan
$PWD # Current working directory
$USER # Nama user
$HOSTNAME # Nama hostSpecial Variables
$0 # Nama script
$1, $2, ... # Argumen posisi
$# # Jumlah argumen
$@ # Semua argumen (array)
$* # Semua argumen (string)
$? # Exit code perintah terakhir
$$ # PID dari shell saat iniExit Code
- 0: Sukses
- 1-255: Error (non-zero = error)
- Gunakan
exituntuk mengakhiri script dengan code tertentu
#!/bin/bash
if [ -f "$1" ]; then
echo "File ditemukan"
exit 0
else
echo "File tidak ditemukan"
exit 1
fiDebugging Script
# Debug mode: tampilkan setiap perintah sebelum dijalankan
bash -x script.sh
# Atau tambahkan di script
set -x # Aktifkan debug
set +x # Matikan debug
# Fail fast: berhenti jika ada error
set -e
set -u # Error jika variable undefined
set -o pipefail # Pipe yang gagal mengembalikan errorShell Option Lengkap
#!/bin/bash
set -euo pipefail
IFS=$'\n\t'set -e: Exit jika perintah gagalset -u: Error jika variabel tidak terdefinisiset -o pipefail: Pipeline gagal jika salah satu perintah gagalIFS: Internal field separator
Man Page dan Help
man bash # Manual lengkap bash
help [ # Bantuan built-in command [
bash --help # Ringkasan opsi bash