Direnv - Kelola variabel lingkungan khusus proyek di Linux

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. Itu dikompilasi menjadi satu statis yang dapat dieksekusi dan mendukung cangkang seperti pesta, zsh, tcsh, dan ikan.

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

Itu digunakan untuk memuat 12faktor APPS (Metodologi untuk Membangun Perangkat Lunak-As-A-Service Apps) Variabel Lingkungan, Buat lingkungan pengembangan yang terisolasi per proyek, dan juga memuat rahasia untuk penyebaran. Selain itu, dapat digunakan untuk membangun solusi instalasi multi-versi dan manajemen yang mirip dengan rbenv, pyenv, dan phpenv.

Jadi bagaimana Direnv bekerja?

Sebelum shell memuat prompt perintah, direnv memeriksa keberadaan a .Envrc file di saat ini (yang dapat Anda tampilkan menggunakan perintah PWD) dan direktori induk. Proses pemeriksaannya cepat dan tidak dapat diperhatikan di setiap prompt.

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

Menginstal Direnv di Linux Systems

Di sebagian besar distribusi Linux, direnv Paket tersedia untuk diinstal dari repositori default menggunakan System Package Manager Anda seperti yang ditunjukkan.

$ sudo apt menginstal direnv #debian, ubuntu dan mint $ sudo dnf menginstal direnv #fedora 

Pada distribusi lain seperti Red Hat Enterprise Linux (RHEL) Dan Centos atau distribusi apa pun yang mendukung bentak, Anda dapat menginstalnya sebagai a patah. Ini mengharuskan Anda untuk menginstal Snapd di sistem Anda.

$ sudo snap menginstal direnv 

Cara mengaitkan direnv ke dalam cangkang bash Anda

Setelah menginstal direnv, Anda perlu menghubungkannya ke cangkang linux Anda saat ini. Misalnya untuk Pesta, Tambahkan baris berikut di akhir ~/.Bashrc mengajukan.

Pastikan bahwa itu muncul bahkan setelahnya RVM, prompt git, dan ekstensi shell lainnya yang memanipulasi prompt.

Eval "$ (Direnv Hook Bash)" 

Untuk shell zsh

Tambahkan baris berikut di akhir ~/.zshrc mengajukan:

eval "$ (direnv hook zsh)" 

Untuk cangkang ikan

Tambahkan baris berikut di akhir ~/.config/fish/config.ikan mengajukan:

Eval (Direnv Hook Fish) 

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

$ sumber ~/.Bashrc $ Source ~/.zshrc $ source ~/.config/fish/config.ikan 

Cara menggunakan direnv di linux shell

Untuk menunjukkan caranya direnv bekerja, kami akan membuat direktori baru yang disebut Tecmint_projects dan pindah ke dalamnya.

$ mkdir ~/tecmint_projects $ cd tecmint_projects/ 

Selanjutnya, mari kita buat variabel baru yang disebut Test_variable Pada baris perintah dan ketika digaungkan, nilainya harus kosong:

$ echo $ test_variable 

Sekarang kami akan membuat yang baru .Envrc file yang berisi kode bash yang akan dimuat oleh direnv. Kami juga mencoba menambahkan garis "Ekspor test_variable = tecmint”Di dalamnya menggunakan perintah Echo dan karakter pengalihan output (>):

$ echo Export test_variable = tecmint> .Envrc 

Secara default, mekanisme keamanan memblokir pemuatan .Envrc mengajukan. Karena kita tahu itu file yang aman, kita perlu menyetujui kontennya dengan menjalankan perintah berikut:

$ direnv izinkan . 

Sekarang kontennya .Envrc File telah diizinkan memuat, mari kita periksa nilainya Test_variable yang kami tetapkan sebelumnya:

$ echo $ test_variable 

Saat kita keluar Tecmint_project direktori, The direnv akan diturunkan dan jika kita memeriksa nilainya Test_variable Sekali lagi, itu harus kosong:

$ CD ... $ echo $ test_variable 
Demonstrasi bagaimana direnv bekerja di linux

Setiap kali Anda pindah ke Tecmint_projects direktori, The .Envrc File akan dimuat seperti yang ditunjukkan pada tangkapan layar berikut:

$ cd tecmint_projects/ 
Memuat file envrc di direktori

Untuk mencabut otorisasi yang diberikan .Envrc, menggunakan membantah memerintah.

$ Direnv DENY . #in direktori saat ini atau $ direnv disangkal/path/to/.Envrc 

Untuk informasi lebih lanjut dan instruksi penggunaan, lihat direnv Halaman pria:

$ man direnv 

Selain itu, direnv juga menggunakan a stdlib (direnv-stdlib) Dilengkapi dengan beberapa fungsi yang memungkinkan Anda untuk dengan mudah menambahkan direktori baru ke Anda JALUR dan lakukan lebih banyak lagi.

Untuk menemukan dokumentasi untuk semua fungsi yang tersedia, periksa direnv-stdlib Halaman Entri Manual:

$ man direnv-stdlib 

Hanya itu yang kami miliki untuk Anda! Jika Anda memiliki pertanyaan atau pemikiran untuk dibagikan kepada kami, gunakan formulir umpan balik di bawah ini.