Dalam sistem berbasis Linux dan Unix, environment variables adalah seperangkat nilai yang memiliki nama dan bersifat dinamis, nilai tersebut disimpan dalam sistem yang digunakan oleh aplikasi yang berjalan didalam shells atau subshells. Dengan kata sederhana, environment variable adalah sejumlah variabel dengan nama dan nilai terkait.

Environment variables memungkinkan Anda untuk menyesuaikan cara kerja sistem dan perilaku aplikasi pada sistem. Misalnya, environment variables dapat menyimpan informasi tentang teks editor atau browser default, jalur ke file yang dapat dieksekusi, atau pengaturan sistem lokal, dan pengaturan tata letak keyboard.

Dalam panduan ini, kami akan menjelaskan cara membaca dan mengatur environment variables dan shell.

Environment Variables dan Shell Variables

Beberapa Variabel yang terdapat di Linux dan Unix memiliki format sebagai berikut:

KEY=value
KEY="Some other value"
KEY=value1:value2
  • Nama-nama variabel bersifat case-sensitive. Sesuai konvensi penamaan, environment variables harus memiliki nama dalam huruf besar (UPPERCASE).
  • Saat menetapkan beberapa nilai ke variabel, mereka harus dipisahkan oleh tanda titik dua :
  • Tidak ada spasi di sekitar simbol sama dengan =

Variabel dapat diklasifikasikan ke dalam dua kategori utama, environment variables dan shell variables.

Environment variables adalah variabel yang tersedia di seluruh sistem dan diwariskan oleh semua child processes dan shells.

Shell variables adalah variabel yang hanya berlaku untuk instance shell saat ini. Setiap shell seperti zsh dan bash, memiliki sekelompok shell variable internal sendiri.

Ada beberapa perintah yang memungkinkan Anda untuk membuat daftar dan mengatur environment variables di Linux:

  • env – Perintah ini memungkinkan Anda untuk menjalankan program lain di lingkungan kustom tanpa mengubah yang sekarang. Ketika digunakan tanpa argumen, ia akan mencetak daftar variabel saat ini.
  • printenv – Perintah ini mencetak semua atau variabel yang ditentukan.
  • set – Perintah untuk set (mengatur) atau unset (membatalkan) shell variable. Ketika digunakan tanpa argumen, ia akan mencetak daftar semua variabel termasuk environment dan shell variables, dan shell functions..
  • unset – Perintah untuk menghapus variabel di shell dan environment.
  • export – Perintah ini mengatur environment variable.

Daftar Environment Variable

Perintah yang paling sering digunakan untuk menampilkan environment variable adalah printenv. Jika nama variabel dilewatkan sebagai argumen ke perintah, hanya nilai dari variabel yang ditampilkan. Jika tidak ada argumen yang ditentukan, printenv hanya mencetak daftar semua environment variables, satu variabel per baris.

Misalnya, untuk menampilkan nilai environment variable dari HOME, maka perintah yang akan Anda jalankan:

printenv HOME

Output akan mencetak jalur pengguna yang saat ini masuk:

/home/linux

Anda juga bisa memberikan lebih dari satu argumen ke perintah printenv:

printenv LANG PWD
en_US
/home/linux

Jika Anda menjalankan perintah printenv atau env tanpa argumen apa pun, perintah tersebut akan menampilkan daftar semua environment variables:

printenv

Outputnya akan terlihat seperti ini:

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;...
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=en_US
S_COLORS=auto
XDG_SESSION_ID=5
USER=linux
PWD=/home/linux
HOME=/home/linux
SSH_CLIENT=192.168.111.1 34422 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/0
MAIL=/var/mail/linux
TERM=xterm-256color
SHELL=/bin/bash
SHLVL=1
LANGUAGE=en_US:
LOGNAME=linux
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LESSOPEN=| /usr/bin/lesspipe %s
_=/usr/bin/printenv

Berikut adalah beberapa variabel yang paling umum:

  • USER – User yang sedang masuk saat ini.
  • HOME – Direktori home dari user saat ini.
  • EDITOR – Editor file default yang akan digunakan. Ini adalah editor yang akan digunakan ketika Anda mengetik edit di terminal Anda.
  • SHELL – Jalur shell user saat ini, seperti bash atau zsh.
  • LOGNAME – Nama user saat ini.
  • PATH – Daftar direktori yang akan dicari saat menjalankan perintah. Ketika Anda menjalankan perintah, sistem akan mencari direktori tersebut dalam urutan ini dan menggunakan executable pertama yang ditemukan.
  • LANG – Pengaturan lokal saat ini.
  • TERM – Emulasi terminal saat ini.
  • MAIL – Lokasi penyimpanan email user saat ini.

Perintah printenv dan env hanya mencetak environment variable. Jika Anda ingin mendapatkan daftar semua variabel, termasuk environment, shell dan variable, dan fungsi shell Anda dapat menggunakan perintah set:

set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()

Perintah ini akan menampilkan daftar besar semua variabel sehingga Anda mungkin ingin menyalurkan output ke perintah less.

set | less

Anda juga dapat menggunakan perintah echo untuk mencetak shell variable. Misalnya, untuk mencetak nilai variabel BASH_VERSION Anda akan menjalankan:

echo $BASH_VERSION
4.4.19(1)-release

Mengatur Environment Variables

Untuk menggambarkan perbedaan antara Shell variables dan Environment variables dengan lebih baik, kita akan mulai dengan mengatur shell Variable dan kemudian beralih ke Environment variable.

Untuk membuat shell variable baru dengan nama MY_VAR dan nilai Linux cukup ketik:

MY_VAR='Linux'

Anda dapat memverifikasi bahwa variabel diatur dengan menggunakan echo $MY_VAR untuk memfilter output dari perintah set dengan grep set | grep MY_VAR:

echo $MY_VAR
Linux

Gunakan perintah printenv untuk memeriksa apakah variabel ini adalah environment variable atau tidak:

printenv MY_VAR

Output akan kosong, yang berarti bahwa variabel tersebut bukan environment variable.

Anda juga dapat mencoba mencetak variabel dalam sub-shell dan Anda akan mendapatkan output kosong.

bash -c 'echo $MY_VAR'

Perintah export digunakan untuk mengatur Environment variables.

Untuk membuat Environment variables cukup ekspor shell variable sebagai environment variable:

export MY_VAR

Anda dapat memeriksa apakah metode ini berhasil dengan menjalankan:

printenv MY_VAR
Linux

Jika Anda mencoba untuk mencetak variabel dalam sub-shell kali ini Anda akan mendapatkan nama variabel yang dicetak pada terminal Anda:

bash -c 'echo $MY_VAR'
Linux

Anda juga dapat mengatur environment variables dalam satu baris:

export MY_NEW_VAR="My New Var"

Environment Variables yang Persisten

Untuk membuat Environment variables tetap ada, Anda perlu mendefinisikan variabel-variabel tersebut sebagai file konfigurasi bash.

Di sebagian besar distribusi Linux ketika Anda memulai sesi baru, environment variables dibaca dari file berikut:

  • /etc/environment – Gunakan file ini untuk mengatur environment variable di seluruh sistem. Variabel dalam file ini diatur dalam format berikut:
    FOO=bar
    VAR_TEST="Test Var"
  • /etc/profile – Variabel yang diatur dalam file ini dimuat setiap shell login bash dimasukkan. Saat mendeklarasikan environment variables dalam file ini, Anda perlu menggunakan perintah export
    export JAVA_HOME="/path/to/java/home"
    export PATH=$PATH:$JAVA_HOME/bin
  • File konfigurasi khusus shell per user. Misalnya, jika Anda menggunakan Bash, Anda dapat mendeklarasikan variabel di ~/.bashrc:
    export PATH="$HOME/bin:$PATH"

Untuk memuat variabel lingkungan baru ke dalam sesi shell saat ini, gunakan perintah source:

source ~/.bashrc

Kesimpulan

Dalam panduan ini, kami telah menunjukkan kepada Anda dasar – dasar mengatur dan mencantumkan environment dan shell variables.