Belajar Zsh - Instalasi & Hello World
Episode 3 of 23

Belajar Zsh - Instalasi & Hello World

Praktik pertama yang nyata: menginstall zsh 5.9.2 di berbagai distro Linux dan macOS, memverifikasi dengan zsh --version, menjadikan Zsh sebagai default shell dengan chsh -s $(which zsh), lalu menulis skrip pertama dengan shebang #!/usr/bin/env zsh beserta cara membuatnya executable

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 2 kita memahami arsitektur Zsh — mode interaktif vs non-interaktif, urutan startup files, dan komponen inti — pada episode ini kita mulai praktik sungguhan: menginstall Zsh dan menulis Hello World pertama. Ini adalah momen di mana semua teori mulai menjadi nyata di terminal kalian.

Mengapa instalasi perlu dibahas dengan benar? Karena versi Zsh sangat menentukan fitur yang tersedia, dan cara install yang salah (misalnya membangun dari source tanpa konfigurasi) bisa menghasilkan binary yang kehilangan fitur penting seperti completion system. Kita targetkan zsh 5.9.2 — versi stabil terbaru per 12 Juli 2026 — sesuai outline series ini.

Instalasi Zsh

Di Debian/Ubuntu

Debian dan Ubuntu menyediakan zsh di repository resmi. Paketnya sudah lengkap dengan completion system dan dokumentasi.

Install zsh di Debian/Ubuntu
sudo apt update
sudo apt install zsh

Di Arch dan Fedora

Install zsh di Arch
sudo pacman -S zsh
Install zsh di Fedora/RHEL
sudo dnf install zsh

Di macOS

macOS sudah membundel zsh sebagai default shell sejak Catalina. Namun versi yang dibundel bisa tertinggal — untuk mendapatkan 5.9.2 gunakan Homebrew:

Install zsh via Homebrew
brew install zsh

Verifikasi Instalasi

Setelah install, verifikasi selalu dengan dua perintah berikut:

Verifikasi versi zsh
zsh --version
which zsh

Output yang diharapkan kurang lebih:

Output zsh --version
zsh 5.9.2 (x86_64-pc-linux-gnu)
/usr/bin/zsh

Warning

Pastikan which zsh menunjuk ke binary yang benar. Setelah brew install zsh di macOS, binary ada di /opt/homebrew/bin/zsh — jika which zsh masih menunjuk ke /bin/zsh (bundled), perbaiki PATH agar versi Homebrew yang menang.

Menjadikan Zsh sebagai Default Shell

Setelah zsh terinstall, kalian bisa menjadikannya default. Ada dua cara: chsh (untuk user biasa) dan usermod (dengan sudo, untuk user lain).

Set zsh sebagai default shell
chsh -s $(which zsh)
# verifikasi di /etc/passwd
grep "^$USER" /etc/passwd

Untuk cek perubahan, keluar dan login ulang, atau jalankan:

Cek shell aktif
echo $SHELL

Tip

Di beberapa setup (misalnya Docker container atau lingkungan CI), /etc/shells harus berisi path zsh sebelum chsh mau bekerja. Jika chsh menolak, tambahkan dulu $(which zsh) ke /etc/shells.

Hello World Pertama

Interaktif

Langsung dari prompt Zsh:

Hello world interaktif
echo "Hello Zsh"
print "Hello dari print"

Perhatikan: Zsh punya print bawaan yang lebih fleksibel daripada echo — ia mendukung print -l (per baris), print -P (expand prompt escapes), dan print -n (tanpa newline). Kita pakai print banyak di episode 16.

Skrip Pertama

Sekarang tulis skrip pertama. Nama file bebas; konvensi series ini memakai ekstensi .zsh agar jelas itu skrip Zsh.

script.zsh
#!/usr/bin/env zsh
 
# Skrip pertama Belajar Zsh
name="Zsh"
echo "Hello $name"
echo "Versi: $ZSH_VERSION"

Baris pertama #!/usr/bin/env zsh adalah shebang — ia memberi tahu sistem bahwa skrip ini harus dijalankan dengan zsh. Menggunakan env lebih portabel daripada hardcode path seperti #!/bin/zsh, karena env mencari zsh lewat PATH (penting untuk setup Homebrew di macOS).

Menjalankan Skrip

Jalankan skrip zsh
chmod +x script.zsh
./script.zsh

Tiga hal yang terjadi: chmod +x membuat file executable, ./script.zsh dieksekusi sebagai program (kernel membaca shebang), lalu zsh menjalankan isi skrip.

Cara alternatif menjalankan
zsh script.zsh

Cara zsh script.zsh tidak butuh executable bit — zsh langsung membaca file sebagai input. Ini berguna saat menulis skrip yang belum di-chmod.

Mode Eksekusi yang Berbeda

Ingat konsep episode 2? Coba bedakan sendiri ketiga cara menjalankan:

Perbedaan mode eksekusi
# 1. Skrip non-interaktif: tidak membaca .zshrc
zsh -c 'echo "$ZSH_VERSION"'
 
# 2. Interaktif: masuk sesi zsh baru
zsh
 
# 3. Non-interaktif, langsung exit
zsh -c 'exit'
Bukti .zshrc tidak dibaca skrip
# Definisikan variabel di .zshrc dulu, lalu:
alias ll="ls -l"
zsh -c 'alias ll'   # kemungkinan kosong (skrip tak baca .zshrc)

Inilah alasan mengapa alias yang didefinisikan di .zshrc tidak tersedia di dalam skrip — dan kenapa di episode 16 kita belajar menulis skrip yang tidak bergantung pada alias.

Ringkasan Instalasi

  • Install: apt/pacman/dnf/brew sesuai platform; target 5.9.2.
  • Verifikasi: zsh --version dan which zsh; perbaiki PATH jika perlu.
  • Default shell: chsh -s $(which zsh); pastikan /etc/shells berisi path zsh.
  • Hello World: echo/print interaktif, dan skrip script.zsh dengan shebang #!/usr/bin/env zsh yang di-chmod +x.
  • Mode eksekusi: zsh -c non-interaktif tidak membaca .zshrc.

Penutup

Inti yang harus dibawa pulang:

  • Target instalasi zsh 5.9.2; selalu verifikasi dengan zsh --version.
  • chsh -s $(which zsh) menjadikan Zsh default; usermod untuk user lain.
  • Shebang #!/usr/bin/env zsh paling portabel untuk skrip.
  • Skrip non-interaktif tidak membaca .zshrc — desain, bukan bug.

Di episode 4 selanjutnya kita akan membahas sintaks dasar dan kompatibilitas dengan bash — variabel dan array (yang ternyata 1-indexed di Zsh!), tied array $path/$PATH, serta daftar perbedaan penting antara Zsh dan bash yang wajib kalian hafal agar skrip kalian tidak "meledak" diam-diam. Sampai jumpa di episode 4!