Direnv - Kelola Variabel Lingkungan Khusus Proyek di Linux


direnv adalah ekstensi sumber terbuka yang bagus untuk shell Anda pada sistem operasi UNIX seperti Linux dan macOS. Ini dikompilasi menjadi satu executable statis dan mendukung shell seperti bash, zsh, tcsh, dan fish.

Tujuan utama direnv adalah untuk memungkinkan variabel lingkungan spesifik proyek tanpa mengacaukan ~/.profile atau file startup shell terkait. Ini mengimplementasikan cara baru untuk memuat dan membongkar variabel lingkungan tergantung pada direktori saat ini.

Ini digunakan untuk memuat variabel lingkungan aplikasi 12faktor (metodologi untuk membangun aplikasi perangkat lunak sebagai layanan), membuat lingkungan pengembangan terisolasi per proyek, dan juga memuat rahasia untuk penerapan. Selain itu, ini dapat digunakan untuk membangun solusi instalasi dan pengelolaan multi-versi yang serupa dengan rbenv, pyenv, dan phpenv.

Jadi Bagaimana Cara Kerja direnv?

Sebelum shell memuat prompt perintah, direnv memeriksa keberadaan file .envrc di direktori saat ini (yang dapat Anda tampilkan menggunakan perintah pwd) dan direktori induk. Proses pengecekannya cepat dan tidak dapat diperhatikan pada setiap perintah.

Setelah menemukan file .envrc dengan izin yang sesuai, ia memuatnya ke dalam sub-shell bash dan menangkap semua variabel yang diekspor dan membuatnya tersedia untuk shell saat ini.

Menginstal direnv di Sistem Linux

Di sebagian besar distribusi Linux, paket direnv tersedia untuk diinstal dari repositori default menggunakan manajer paket sistem Anda seperti yang ditunjukkan.

sudo apt install direnv		#Debian,Ubuntu and Mint
sudo dnf install direnv		#Fedora

Pada distribusi lain seperti Red Hat Enterprise Linux (RHEL) dan CentOS atau distribusi apa pun yang mendukung snaps, Anda dapat menginstalnya sebagai jepret. Ini mengharuskan Anda menginstal snapd di sistem Anda.

sudo snap install direnv

Cara Menghubungkan direnv ke Bash Shell Anda

Setelah menginstal direnv, Anda perlu menghubungkannya ke shell Linux Anda saat ini. Misalnya untuk Bash, tambahkan baris berikut di akhir file ~/.bashrc.

Pastikan perintah tersebut muncul bahkan setelah rvm, git-prompt, dan ekstensi shell lain yang memanipulasi prompt.

eval "$(direnv hook bash)"

Untuk ZSH Shell

Tambahkan baris berikut di akhir file ~/.zshrc:

eval "$(direnv hook zsh)" 

Untuk Cangkang IKAN

Tambahkan baris berikut di akhir file ~/.config/fish/config.fish:

eval (direnv hook fish)

Kemudian tutup jendela terminal aktif dan buka shell baru atau sumber file seperti yang ditunjukkan.

source ~/.bashrc
source  ~/.zshrc 
source ~/.config/fish/config.fish

Cara Menggunakan direnv di Linux Shell

Untuk mendemonstrasikan cara kerja direnv, kita akan membuat direktori baru bernama tecmint_projects dan memindahkannya ke dalamnya.

mkdir ~/tecmint_projects
cd tecmint_projects/

Selanjutnya, mari kita buat variabel baru bernama TEST_VARIABLE pada baris perintah dan ketika di-echo, nilainya harus kosong:

echo $TEST_VARIABLE

Sekarang kita akan membuat file .envrc baru yang berisi kode Bash yang akan dimuat oleh direnv. Kami juga mencoba menambahkan baris “export the TEST_VARIABLE=tecmint ” di dalamnya menggunakan perintah echo dan karakter pengalihan keluaran (>):

echo export TEST_VARIABLE=tecmint > .envrc

Secara default, mekanisme keamanan memblokir pemuatan file .envrc. Karena kami tahu ini adalah file yang aman, kami perlu menyetujui kontennya dengan menjalankan perintah berikut:

direnv allow .

Sekarang konten file .envrc telah diizinkan untuk dimuat, mari kita periksa nilai TEST_VARIABLE yang kita tetapkan sebelumnya:

echo $TEST_VARIABLE

Saat kita keluar dari direktori tecmint_project, direnv akan dibongkar dan jika kita memeriksa nilai TEST_VARIABLE sekali lagi, nilai tersebut seharusnya kosong:

cd ..
echo $TEST_VARIABLE

Setiap kali Anda berpindah ke direktori tecmint_projects, file .envrc akan dimuat seperti yang ditunjukkan pada tangkapan layar berikut:

cd tecmint_projects/

Untuk mencabut otorisasi .envrc tertentu, gunakan perintah deny.

direnv deny .			#in current directory
OR
direnv deny /path/to/.envrc

Untuk informasi lebih lanjut dan petunjuk penggunaan, lihat halaman manual direnv:

man direnv

Selain itu, direnv juga menggunakan stdlib (direnv-stdlib) yang dilengkapi dengan beberapa fungsi yang memudahkan Anda menambahkan direktori baru ke Anda PATH dan lakukan lebih banyak lagi.

Untuk menemukan dokumentasi semua fungsi yang tersedia, periksa halaman entri manual direnv-stdlib:

man direnv-stdlib

Hanya itu yang kami punya untuk Anda! Jika Anda memiliki pertanyaan atau pemikiran untuk disampaikan kepada kami, gunakan formulir masukan di bawah.