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.