Apa itu Environment Variables?
Environment variables (variabel lingkungan) adalah pasangan key-value yang menyimpan konfigurasi untuk sistem operasi dan aplikasi. Mereka adalah cara aman untuk menyimpan informasi sensitif dan konfigurasi yang berubah antar environment.
Mengapa Penting?
- Keamanan — menyimpan API key, password, token tanpa hardcode di kode
- Fleksibilitas — konfigurasi berbeda untuk development, staging, production
- Standar industri — 12-Factor App methodology menganjurkan env vars
Melihat Environment Variables
# Tampilkan semua env vars
env
# atau
printenv
# Tampilkan satu variabel
echo $HOME
# /home/budi
echo $PATH
# /usr/local/bin:/usr/bin:/bin:...
echo $USER
# budi
# Cari variabel tertentu
env | grep NODE
# NODE_ENV=development
Variabel Bawaan yang Penting
| Variable | Isi |
|---|---|
$HOME |
Home directory user |
$USER |
Username saat ini |
$PATH |
Daftar direktori untuk mencari program |
$PWD |
Direktori kerja saat ini |
$SHELL |
Shell yang digunakan |
$LANG |
Bahasa dan encoding |
$EDITOR |
Text editor default |
Membuat Environment Variable
# Set untuk session saat ini saja
export API_KEY="sk-abc123"
export NODE_ENV="development"
export PORT=3000
echo $API_KEY # sk-abc123
echo $NODE_ENV # development
# Set hanya untuk satu perintah
NODE_ENV=production npm run build
# NODE_ENV hanya "production" selama perintah npm berjalan
# Tanpa export — hanya variable biasa (tidak diwariskan ke child process)
MY_VAR="hello"
# child process TIDAK bisa akses $MY_VAR
$PATH — Mencari Program
$PATH adalah variabel terpenting. Berisi daftar direktori (dipisahkan :) di mana shell mencari program:
echo $PATH
# /usr/local/bin:/usr/bin:/bin:/home/budi/.local/bin
# Tambahkan direktori ke PATH
export PATH="$HOME/.local/bin:$PATH"
# Cek di mana sebuah program ditemukan
which node
# /usr/local/bin/node
File Konfigurasi Shell
Env vars yang di-set dengan export hilang saat terminal ditutup. Untuk membuatnya permanen, tambahkan ke file konfigurasi:
# Untuk bash
~/.bashrc # setiap interactive shell
~/.bash_profile # saat login
# Untuk zsh
~/.zshrc # setiap interactive shell
# Contoh isi .bashrc
export NODE_ENV="development"
export EDITOR="code"
export PATH="$HOME/.npm-global/bin:$PATH"
Setelah mengedit, muat ulang:
source ~/.bashrc
# atau
source ~/.zshrc
File .env di Project
Standar di banyak framework (Laravel, Node.js, React):
# .env file
DATABASE_URL=postgres://user:pass@localhost/mydb
API_KEY=sk-abc123
JWT_SECRET=supersecret
PORT=3000
PENTING: Jangan pernah commit .env ke Git! Tambahkan ke .gitignore:
echo ".env" >> .gitignore
Tips Keamanan
- Jangan hardcode secret di source code
- Gunakan
.env.exampleuntuk template (tanpa nilai sensitif) - Jangan echo secret ke log atau terminal bersama
- Gunakan tool seperti
direnvataudotenvuntuk manajemen env vars - Rotate API key dan secret secara berkala