Environment Variables, PATH, dan Shell Configuration
Memahami environment variable, cara kerja PATH, file konfigurasi shell, dan praktik aman menyimpan konfigurasi aplikasi.
Aplikasi dan shell membaca environment variable untuk mengetahui konfigurasi seperti lokasi database, port, dan kunci rahasia. Memahami PATH dan file konfigurasi shell membuat environment Anda konsisten dan mudah direproduksi.
Environment variable
Environment variable adalah pasangan NAMA=nilai yang diwariskan ke proses anak.
env
printenv
printenv HOME
echo "$USER"
echo "$PATH"Membuat variabel untuk sesi saat ini:
APP_ENV=production
echo "$APP_ENV"Variabel tersebut belum tersedia untuk proses anak sampai di-export:
export APP_ENV=production
bash -c 'echo $APP_ENV'| Perintah | Cakupan |
|---|---|
VAR=nilai | Shell saat ini, tidak diwariskan |
export VAR=nilai | Shell dan proses anak |
env VAR=nilai perintah | Hanya proses yang dijalankan |
unset VAR | Menghapus variabel |
PATH
PATH adalah daftar direktori tempat shell mencari perintah.
echo "$PATH"
which nginx
type -a python3Contoh nilai:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binMenambahkan direktori ke PATH:
export PATH="$HOME/.local/bin:$PATH"Jangan menaruh direktori tidak tepercaya di depan PATH
Direktori yang dapat ditulis user lain di awal PATH bisa dipakai untuk menaruh perintah palsu. Letakkan hanya direktori yang Anda kontrol.
File konfigurasi shell
| File | Kapan dibaca |
|---|---|
/etc/profile | Semua user, login shell |
/etc/bash.bashrc | Semua user, shell interaktif (Debian/Ubuntu) |
~/.bashrc | Shell interaktif user |
~/.profile | Login shell user |
~/.bash_profile | Login shell Bash (jika ada) |
Alur sederhana:
- Login shell (SSH, console): membaca
/etc/profile, lalu~/.profileatau~/.bash_profile. - Non-login interactive shell: membaca
~/.bashrc. - Script non-interaktif biasanya tidak membaca file interaktif.
Contoh menambahkan variabel di ~/.bashrc:
cat >> ~/.bashrc <<'EOF'
export APP_ENV=development
export PATH="$HOME/.local/bin:$PATH"
alias ll='ls -lah'
EOF
source ~/.bashrcVariabel untuk service systemd
Service systemd tidak membaca ~/.bashrc. Gunakan Environment atau EnvironmentFile.
[Service]
Environment=NODE_ENV=production
EnvironmentFile=/etc/myapp/app.env
ExecStart=/usr/bin/node /srv/app/server.jsIsi /etc/myapp/app.env:
PORT=3000
DATABASE_URL=postgres://user:pass@localhost:5432/appAmankan file:
chown root:app /etc/myapp/app.env
chmod 640 /etc/myapp/app.envFile .env untuk aplikasi
Banyak aplikasi Node.js membaca .env lewat library seperti dotenv.
cat > /srv/app/.env <<'EOF'
NODE_ENV=production
PORT=3000
LOG_LEVEL=info
EOF
chmod 600 /srv/app/.envJangan commit rahasia
.env berisi kredensial dan tidak boleh masuk Git. Tambahkan ke .gitignore, dan gunakan secret
manager untuk produksi yang lebih serius.
Praktik: menyiapkan environment aplikasi
# 1. Buat direktori konfigurasi
mkdir -p /srv/app
# 2. Buat file environment
cat > /srv/app/.env <<'EOF'
NODE_ENV=production
PORT=3000
APP_NAME=latihan
EOF
chmod 600 /srv/app/.env
# 3. Muat ke shell saat ini
set -a
source /srv/app/.env
set +a
# 4. Verifikasi
printenv NODE_ENV
printenv PORTset -a membuat semua variabel yang didefinisikan otomatis di-export; set +a mematikannya.
Ringkasan
- Environment variable mengatur perilaku aplikasi tanpa mengubah kode.
PATHmenentukan lokasi perintah yang dicari shell.- File shell berbeda untuk login dan non-login; service memakai konfigurasi systemd.
- Simpan rahasia di file dengan permission ketat, bukan di repository.
Selanjutnya
Kelola proses dan service di Process, Job, Service, dan System Management.
Package Management dan Software Installation
Mengelola paket di Debian/Ubuntu dan RHEL-family, memahami repository, serta menginstal aplikasi dengan aman dan terukur.
Process, Job, Service, dan System Management
Melihat dan mengelola proses, job shell, service systemd, log, serta tugas terjadwal di Linux server.