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.