Dotfiles & Env Management — Terminal

Dotfiles & Environment Management Dotfiles adalah file konfigurasi yang namanya diawali titik (.) — tersembunyi di file manager tapi sangat penting bagi…

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 mengetik gs di 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

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

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

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
$ git status --short
?? .env
$ echo ".env" >> .gitignore
$ git status --short
?? .gitignore

📌 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

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.

Yang akan kamu pelajari