Direnv - Linux'ta Projeye Özel Ortam Değişkenlerini Yönetin


direnv, Linux ve macOS gibi UNIX işletim sistemindeki kabuğunuz için şık bir açık kaynaklı uzantıdır. Tek bir statik yürütülebilir dosya halinde derlenir ve bash, zsh, tcsh ve balık gibi kabukları destekler.

direnv'in temel amacı, ~/.profile veya ilgili kabuk başlangıç dosyalarını karmaşıklaştırmadan projeye özgü ortam değişkenlerine izin vermektir. Geçerli dizine bağlı olarak ortam değişkenlerini yüklemek ve kaldırmak için yeni bir yol uygular.

12 faktörlü uygulamaları (hizmet olarak yazılım uygulamaları oluşturmaya yönelik bir metodoloji) ortam değişkenlerini yüklemek, proje başına yalıtılmış geliştirme ortamları oluşturmak ve ayrıca dağıtım için gizli dizileri yüklemek için kullanılır. Ayrıca rbenv, pyenv ve phpenv'e benzer çok sürümlü kurulum ve yönetim çözümleri oluşturmak için kullanılabilir.

Peki direnv Nasıl Çalışır?

Kabuk bir komut istemi yüklemeden önce direnv, geçerli (pwd komutunu kullanarak görüntüleyebileceğiniz) ve üst dizinde bir .envrc dosyasının varlığını kontrol eder. Kontrol süreci hızlıdır ve her istemde fark edilemez.

Uygun izinlere sahip .envrc dosyasını bulduğunda, onu bir bash alt kabuğuna yükler ve dışa aktarılan tüm değişkenleri yakalayıp bunları geçerli kabukta kullanılabilir hale getirir.

Linux Sistemlerinde Direnç Kurulumu

Linux dağıtımlarının çoğunda direnv paketi, gösterildiği gibi sistem paket yöneticinizi kullanarak varsayılan depolardan kurulabilir.

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

Red Hat Enterprise Linux (RHEL) ve CentOS gibi diğer dağıtımlarda veya anlık görüntüleri destekleyen herhangi bir dağıtımda, onu RHEL olarak yükleyebilirsiniz. >ekle'yi tıklayın. Bu, sisteminizde snapd'in kurulu olmasını gerektirir.

sudo snap install direnv

Direnç'i Bash Shell'inize Nasıl Bağlarsınız?

direnv'i yükledikten sonra onu mevcut Linux kabuğunuza bağlamanız gerekir. Örneğin Bash için ~/.bashrc dosyasının sonuna aşağıdaki satırı ekleyin.

rvm, git-prompt ve istemi değiştiren diğer kabuk uzantılarından sonra bile göründüğünden emin olun.

eval "$(direnv hook bash)"

ZSH Kabuğu için

~/.zshrc dosyasının sonuna aşağıdaki satırı ekleyin:

eval "$(direnv hook zsh)" 

BALIK Kabuğu için

~/.config/fish/config.fish dosyasının sonuna aşağıdaki satırı ekleyin:

eval (direnv hook fish)

Ardından aktif terminal penceresini kapatın ve yeni bir kabuk açın veya dosyayı gösterildiği gibi kaynaklayın.

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

Linux Kabuğunda Direnç Nasıl Kullanılır

direnv'in nasıl çalıştığını göstermek için tecmint_projects adında yeni bir dizin oluşturup içine taşınacağız.

mkdir ~/tecmint_projects
cd tecmint_projects/

Daha sonra komut satırında TEST_VARIABLE adında yeni bir değişken oluşturalım ve yankılandığında değerin boş olması gerekir:

echo $TEST_VARIABLE

Şimdi direnv tarafından yüklenecek Bash kodunu içeren yeni bir .envrc dosyası oluşturacağız. Ayrıca echo komutunu ve (>) çıktı yönlendirme karakterini kullanarak “export the TEST_VARIABLE=tecmint” satırını da eklemeye çalışıyoruz:

echo export TEST_VARIABLE=tecmint > .envrc

Varsayılan olarak güvenlik mekanizması .envrc dosyasının yüklenmesini engeller. Güvenli bir dosya olduğunu bildiğimiz için aşağıdaki komutu çalıştırarak içeriğini onaylamamız gerekiyor:

direnv allow .

Artık .envrc dosyasının içeriğinin yüklenmesine izin verildiğine göre, daha önce ayarladığımız TEST_VARIABLE değerini kontrol edelim:

echo $TEST_VARIABLE

tecmint_project dizininden çıktığımızda direnv kaldırılacaktır ve TEST_VARIABLE değerini bir kez daha kontrol edersek boş olması gerekir:

cd ..
echo $TEST_VARIABLE

tecmint_projects dizinine her geçişinizde, .envrc dosyası aşağıdaki ekran görüntüsünde gösterildiği gibi yüklenecektir:

cd tecmint_projects/

Belirli bir .envrc'nin yetkilendirmesini iptal etmek için reddet komutunu kullanın.

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

Daha fazla bilgi ve kullanım talimatları için direnv kılavuz sayfasına bakın:

man direnv

Ayrıca, direnv aynı zamanda direnv'e (direnv-stdlib) kolayca yeni dizinler eklemenizi sağlayan çeşitli işlevlerle birlikte gelen bir stdlib (direnv-stdlib) kullanır. PATH ve çok daha fazlasını yapın.

Mevcut tüm işlevlere ilişkin belgeleri bulmak için direnv-stdlib manuel giriş sayfasına bakın:

man direnv-stdlib

Senin için sahip olduğumuz tek şey bu! Bizimle paylaşmak istediğiniz sorularınız veya düşünceleriniz varsa aşağıdaki geri bildirim formunu kullanın.