Dotfiles adalah file pengaturan yang namanya diawali titik, kebanyakan ada di folder home (~): ~/.zshrc, ~/.bashrc, ~/.gitconfig. Titik di depan nama bikin file itu tersembunyi dari ls biasa. Bayangin daftar tugas pagi yang dibaca penjaga toko setiap kali toko dibuka: nyalakan lampu, pasang papan harga. Shell melakukan hal yang sama dengan ~/.zshrc: membacanya setiap kali terminal baru dibuka. Tugas yang kamu tambahkan siang hari baru dikerjakan besok pagi, kecuali ada yang membacakannya lagi sekarang.
🧪 Tebakan cepat: kamu menambah
alias gs='git status'ke~/.zshrc, lalu langsung mengetikgsdi terminal yang sama. Jalan? Tebak dulu, jawabannya ada di bagian "Terminal yang sudah terbuka belum tahu: source".
Dotfiles yang sering kamu temui
| File | Isinya |
|---|---|
~/.zshrc |
pengaturan zsh, shell bawaan macOS: alias, function, export |
~/.bashrc |
sama, untuk bash, shell bawaan kebanyakan Linux |
~/.gitconfig |
nama, email dan alias untuk git |
~/.ssh/config |
daftar server SSH beserta user dan key-nya |
.env (di folder proyek) |
password, API key dan pengaturan satu proyek |
.gitignore (di folder proyek) |
daftar file yang gak boleh masuk git |
lsmenyembunyikan nama yang diawali titik.ls -a(a = all) menampilkannya.- Gak yakin shell-mu yang mana?
echo $SHELL. Kalau hasilnya/bin/zsh, edit~/.zshrc. Kalau/bin/bash, edit~/.bashrc.
Isi ~/.zshrc: empat jenis baris
# ~/.zshrc: dibaca tiap kali terminal zsh baru dibuka
alias gs='git status'
export EDITOR=vim
source ~/.oh-my-zsh/oh-my-zsh.sh
- comment: baris yang diawali
#. Dilewati, cuma catatan. - alias:
alias nama='perintah', singkatan dari pelajaran sebelumnya. - export:
export NAMA=nilaimembuat environment variable yang ikut ke setiap program yang dijalankan dari terminal itu.EDITORmemberi tahu program seperti git editor mana yang dibuka waktu kamu perlu menulis sesuatu. - source:
source filemenjalankan isi file lain di shell ini, misalnya plugin Oh My Zsh. Kalau file itu gak ada, zsh mengeluh setiap terminal dibuka.
Kata kuncinya selalu diikuti spasi: alias gs=..., bukan aliases=3. Baris lain, misalnya PATH=/usr/bin tanpa export, cuma variabel biasa di shell itu dan gak ikut ke program lain.
Terminal yang sudah terbuka belum tahu: source
Di terminal zsh, di folder ~/proyek-toko yang berisi repo git bersih:
$ echo "alias gs='git status'" >> ~/.zshrc
$ gs
zsh: command not found: gs
$ source ~/.zshrc
$ gs
On branch main
nothing to commit, working tree clean
>>menambah satu baris di akhir file, seperti di pelajaran Piping.- zsh membaca
~/.zshrccuma sekali, waktu terminalnya dibuka. Terminal ini dibuka sebelum kamu mengedit, jadi dia belum kenalgs. Itu jawaban tebakannya. source ~/.zshrcmembaca ulang file itu dan menjalankan isinya di terminal ini. Bentuk singkatnya. ~/.zshrc. Membuka tab terminal baru juga berhasil, karena tab baru membaca file-nya dari awal.
Sama untuk export:
$ echo 'export EDITOR=vim' >> ~/.zshrc
$ source ~/.zshrc
$ echo $EDITOR
vim
📌 Kenapa ~/.bashrc kadang gak dibaca
Shell yang dibuka sebagai login shell membaca file yang berbeda. Terminal di macOS membuka login shell, jadi zsh membaca ~/.zprofile lalu ~/.zshrc. Terminal di Linux biasanya membuka bash biasa, yang membaca ~/.bashrc. Tapi waktu kamu masuk ke server lewat SSH, bash jadi login shell dan membaca ~/.bash_profile (atau ~/.profile), bukan ~/.bashrc. Ubuntu sudah mengaturnya: ~/.profile bawaannya ikut memuat ~/.bashrc. Kalau server-mu belum, tambahkan baris ini ke ~/.bash_profile:
[ -f ~/.bashrc ] && source ~/.bashrc
.env: rahasia per proyek
# .env di folder proyek-toko
DB_HOST=localhost
DB_PASS=rahasia123
API_KEY=sk-abc123
.envberisi password dan API key, jadi jangan di-commit. Begitu repo-nya publik, atau suatu hari dibuka ke orang lain, siapa pun bisa membacanya.- Tulis
.envdi.gitignoresebelum commit pertama:
$ git status --short
?? .env
$ echo ".env" >> .gitignore
$ git status --short
?? .gitignore
??artinya file itu belum dilacak git. Setelah.envmasuk.gitignore, git gak menampilkannya lagi, jadigit add .gak akan ikut membawanya.- Commit
.env.examplesebagai gantinya: nama variabelnya sama, nilainya kosong atau contoh, supaya teman setim tahu apa yang harus diisi. - Framework seperti Laravel atau Vite membaca
.envsendiri. Shell gak otomatis memuatnya.
📌 Simpan dotfiles di Git
Banyak developer menyimpan dotfiles di repo sendiri, misalnya ~/dotfiles, lalu menautkannya ke home dengan symlink: ln -s ~/dotfiles/.zshrc ~/.zshrc. Di laptop baru tinggal clone lalu bikin symlink-nya, dan semua alias dan pengaturan langsung ada. Jangan pernah masukkan .env atau key SSH ke repo itu.
⚠️ Jebakan yang sering ketemu
- Edit
~/.zshrclalu lupasource. Hasilnyazsh: command not founddi terminal yang sudah terbuka. - Edit file yang salah. Pakai zsh tapi menulis di
~/.bashrc(atau sebaliknya). Cek dulu denganecho $SHELL. - Spasi di sekitar
=.export EDITOR = vimgak mengisi apa-apa: zsh bilangzsh: bad assignment, bash bilangbash: export: `=': not a valid identifier. .envtelanjur di-commit. Menambahkannya ke.gitignorebelakangan gak menghapusnya dari history.git rm --cached .envmenghentikan pelacakannya, tapi isinya masih ada di commit lama, jadi ganti password dan API key-nya.
TL;DR: Dotfiles adalah file pengaturan yang namanya diawali titik, seperti ~/.bashrc, ~/.zshrc dan ~/.gitconfig, tersembunyi dari ls biasa (pakai ls -a). Shell membaca ~/.zshrc (zsh) atau ~/.bashrc (bash) sekali, waktu terminal dibuka, jadi setelah mengeditnya jalankan source ~/.zshrc atau buka tab baru. Isinya empat jenis baris: comment (#), alias, export NAMA=nilai, dan source file, tanpa spasi di sekitar =. .env menyimpan rahasia proyek: tulis di .gitignore, commit .env.example sebagai gantinya, dan kalau telanjur ter-commit, ganti rahasianya.