Doküman

envsubst Komutunu Kullanarak Ortam Değişkenlerini Değiştirme

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
export environment variables using the export command in linux

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

envsubst < confidential.txt
use envsubst command to change environment variable values in file on linux

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:

unset variables in linux

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
redirect envsubst output to file on linux

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:

use envsubst command to substitute environment variables

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
substitue specific variables using envsubst with SHELL-FORMAT on linux

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.