Paket 1 · Fondasi DevOpsModul C — Linux Fundamentals

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'
PerintahCakupan
VAR=nilaiShell saat ini, tidak diwariskan
export VAR=nilaiShell dan proses anak
env VAR=nilai perintahHanya proses yang dijalankan
unset VARMenghapus variabel

PATH

PATH adalah daftar direktori tempat shell mencari perintah.

echo "$PATH"
which nginx
type -a python3

Contoh nilai:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Menambahkan 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

FileKapan dibaca
/etc/profileSemua user, login shell
/etc/bash.bashrcSemua user, shell interaktif (Debian/Ubuntu)
~/.bashrcShell interaktif user
~/.profileLogin shell user
~/.bash_profileLogin shell Bash (jika ada)

Alur sederhana:

  • Login shell (SSH, console): membaca /etc/profile, lalu ~/.profile atau ~/.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 ~/.bashrc

Variabel 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.js

Isi /etc/myapp/app.env:

PORT=3000
DATABASE_URL=postgres://user:pass@localhost:5432/app

Amankan file:

chown root:app /etc/myapp/app.env
chmod 640 /etc/myapp/app.env

File .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/.env

Jangan 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 PORT

set -a membuat semua variabel yang didefinisikan otomatis di-export; set +a mematikannya.

Ringkasan

  • Environment variable mengatur perilaku aplikasi tanpa mengubah kode.
  • PATH menentukan 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.

On this page