Komut dosyalarıyla çalışırken, kullanıcıların çoğu ortam değişkenlerini kullanır ancak bazen riskli bir değişkenleri kullanıyorlar.
Bu nedenle ortam değişkenlerini değiştirmek isterseniz envsubst komutunu kullanabilirsiniz.
Linux’ta envsubst komutunu kullanarak ortam değişkenlerini değiştirin
envsubst komutu, ortam değişkenlerinin yerine geçmek için kullanılır, adından da anlaşılacağı gibi.
Ancak değişkenler dizininizi değiştirmez. İlk olarak, değişken modelleri ($VARIABLE veya [$VARIABLE] gibi) arayacaktır.
Ve sonra bulunan değişkenleri belirli bir bash değişkeni ile değiştirecektir.
envsubst komutu yalnızca dışa aktarılan değişkenleri tanıyacaktır.
Envsubst kullanarak ortam değişkenlerinizi değiştirmek için aşağıda verilen komut yapısını izlemeniz gerekir:
envsubst [OPTION] [SHELL-FORMAT]
Şimdi, ortam değişkenini nasıl değiştirebileceğinize bir göz atalım.
Bu amaçla, aşağıdakileri içeren secret.txt adlı bir dosya kullanacağız:
A sample file containg password and username!
And should not be shared by any means.
My loging credentials are:
username=$USERNAME
password=$PASSWORD
Şimdi, hem $USERNAMe hem de $PASSWORD için ikame değerlere sahip olmak adına, İlk önce her ikisi için de dışa aktarılan bir değişken oluşturacağız:
export USERNAME=abhiman
export PASSWORD=strongphrase

Değişken değerlerini dışa aktarmayı bitirdiğinizde, oluşturduğunuz dosya için envsubst komutunu çağırabilirsiniz:
envsubst < confidential.txt

Gördüğünüz gibi, değerler başarıyla değiştirildi!!
Benzer şekilde, unset komutunu kullanarak bu değişkenlerin ayarını kaldırabilirsiniz. Nasıl olduğunu görelim:
Öncelikle, export komutuyla belirttiğiniz değişkenin ayarını kaldırın.
Yukarıdaki örnekte bunlar USERNAME ve PASSWORD idi:
unset USERNAME PASSWORD
Şimdi, envsubst komutunu tekrar çalıştırırsanız, değerler boş kalacaktır:

Nasıl olduğunu merak ediyorsanız daha önce bahsettiğimiz bir şeyi hatırlatalım.
envsubst komutu yalnızca dışa aktarılan değişkenlerle çalışır ve unset komutunu kullandığımızda bu değerler boştu.
Dolayısı ile envsubst komutu değiştirilecek bir değer bulamadığında, değişken karşılığını boş bırakır.
Çıktıyı belirli bir dosyaya yönlendirme
Terminalde bir çıktı dizinine sahip olmak her zaman işleri yapmanın en iyi yolu değildir ve bu durumda standart çıktıyı dosyaya yönlendirebilirsiniz.
Çıktıyı dosyaya yönlendirmek için > yeniden yönlendirme sembolünü kullanmanız gerekecektir.
Örneğin, burada çıktıyı Output.txt adlı dosyaya yönlendireceğiz:
envsubst < confidential.txt > Output.txt

SHELL-FORMAT ile envsubst komutunu kullanarak belirli değişkenleri değiştirin
Pek çok ortam değişkenini dışa aktardığınızı ancak bunların yalnızca birkaçını değiştirmek istediğinizi varsayalım.
Ve bu durumda, SHELL-FORMAT’ı kullanabilirsiniz.
Sözdizimi oldukça esnektir ve tek yapmanız gereken ‘ ‘ içinde değişkeni belirtmektir ve onu çeşitli şekillerde kullanabilirsiniz:
Şunun gibi kullanılabilir:
envsubst '$variable' > dosya
Veya bunun gibi birden çok değişken ekleyebilirsiniz:
envsubst '$variable1 $variable1 $variable3' > file
Daha iyi anlamak için temel metni bile ekleyebilirsiniz:
envsubst 'subsitute the $variable1 and $variable2' > file
Oldukça esnek. Değil mi?
Şimdi, bu örnek için, aşağıdakileri içeren Substitute.txt adlı bir dosya kullanacağım:
Hello, My name is $USER.
And these are login credentials for $SERVICE:
username=$USERNAME
password=$PASSWORD
Not meant for public use!
Ardından, yukarıdaki dosyada kullanılan her değişken için değerleri dışa aktaracağım:
export USER=sagar export SERVICE=AWS export USERNAME=LHB export PASSWORD=randomphrase
Ve herhangi bir belirli değişkeni değiştirmeden, bize şu çıktıyı vermeli:

Diyelim ki, çıktıya yalnızca $USER ve $SERVICE değerlerinin yansımasını istiyorum, bu yüzden aşağıdakileri kullanacağız:
envsubst '$USER $SERVICE' < Substitute.txt

Ve gördüğünüz gibi $USER ve $SERVICE değerlerini gösterirken $USERNAME ve $PASSWORD değerlerini olduğu gibi bıraktı.
Özel bilgileri işlemek için zarif bir yol. değil mi
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.