Ubuntu'da "setx" eşdeğeri


10

Windows, setxkullanıcı veya sistem ortamında ortam değişkenleri oluşturur veya değiştirir adlı bir powershell komutuna sahiptir .

Mu Ubuntu benzer bir komutu vardır, kullanarak değil yani nanoveya vieklemek veya geniş bir çevre değişkeni sistemini güncellemek için, sadece bir satır.

Uygulanan Çözüm

Eklenecek / güncellenecek bir satır

grep env_name /etc/environment && sed -i.bak 's/env_name=.*/env_name="env_value"/' /etc/environment || echo 'env_name="env_value"' >> /etc/environment

Yanıtlar:


12

Bunu komut satırında yeni olarak bildirerek veya yeniden bildirerek yapabilirsiniz. Örneğin, ~/testfolderyol değişkeninize eklemek istiyorsanız , bunu geçerli terminalinize girebilirsiniz (bu sadece bir örnektir):

PATH="$HOME/testfolder:$PATH"

Bu elbette sadece terminal oturumunun açık olduğunu belirlediğiniz süre boyunca değişecektir. $Buradaki kullanıma dikkat edin, beyan için dışarıda bırakın, ancak görüntülemek istiyorsanız $içeriğini genişletmek için eklemeniz gerekir .

Onları daha kalıcı ve genel olarak bildirmek istiyorsanız, bunları ~/.bashrc(yalnızca sizin için) dosyanıza veya /etc/bash.bashrc(sistem genelinde) ekleyebilirsiniz , örneğin yalnızca sizin veya tüm kullanıcılar için sayılmasını istiyorsanız. Başka bir seçenek, .profiledosyaya (yalnızca kendiniz için) giriş yaptığınız andan itibaren geçerli olacak şekilde eklemektir . echoÖrneğin, bu değişkenin önceden ayarlanmadığından eminseniz veya yenilerini oluşturursanız bunu yapabilirsiniz. (yalnızca bir örnek):

echo "variable=value" >> /path/filename

Bununla birlikte, kullanıcı dizininiz dışında bir dosyayı düzenlemek istiyorsanız, düzenlemek /etc/bash.bashrcistediğinizde kullanmanız gerekir sudove bu nedenle bu işe yaramayacağından bir 'burada belge' kullanamazsınız, bunun yerine aşağıdaki gibi bir satır kullanın:

echo "variable=value" | sudo tee -a /path/filename

Değişken zaten mevcutsa, bunu sedkomutla değiştirebilirsiniz (ayrıca yalnızca bir örnek):

sed -i.bak 's/variable=value/variable=new-value/' /path/filename

Bu, değişkeni dosyada düzenler, ancak düzenlemeden önce bir yedeğini oluşturur. Kullanıcı dizininizin dışındaki dosyaları sed ile değiştirirseniz sudo, satırın olması için çoğu durumda kullanmanız gerekir:

sudo sed -i.bak 's/variable=value/variable=new-value/' /path/filename

Bir değişkenin dosyadan kaldırılmasıyla da yapılabilir sed, normal ifadenin ikinci bölümünü boş bırakın:

sed -i.bak 's/variable=value//' /path/filename

İlgilendiğiniz ortam değişkenleri ayarlanmışsa env, bunları listelemek için komutu kullanabilirsiniz ( set -o posix ; set ) | lessveya sh -c set. Her üçü ( set -o posix ; set ) | lessde gerçekte ayarlanmış en çok değişkeni vererek çeşitli miktarlarda çıktı verir.


1
Bunun yerine ( set -o posix ; set )söylemek daha kolay sh -c set. Bu sh, bir symlink olsa bile çalışır bash(normalde modern Ubuntu sürümlerinde yoktur).
Ruslan

@ruslan sh -c set, sistemde ayarlanmış tüm ortam değişkenlerini gerçekten göstermiyor. Ancak bazılarını göstermek için üçüncü bir yol olarak dahil edeceğim.
Videonauth

Aslında sh -c settüm ortam değişkenlerini gösterir . Sadece çağıran kabuğun kabuk değişkenlerini göstermez , ancak bunlar, siz kabuk olmadıkça, o kabuktan çalıştırdığınız bir işlem tarafından devralınmaz export.
Ruslan

Var mı hiç düzenlemek için geçerli bir sebep /etc/environment? Görünüşe göre bu karışıklık için bir kısayol.
Roger Lipscombe

@RogerLipscombe Teşekkür ederim, bundan emin değildim, hala değişkenleri düzenlemek için uygun bir yer, ancak karışıklığa neden olmamak için çıkardım.
Videonauth

11

Doğrudan bir eşdeğeri yoktur setx /m, ancak ne yapmanın yolları vardır setx /m.

setx /mkoyar variable=valueiçinde HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. Non-/ m (yani, her kullanıcı) setxsadece koyar variable=valueiçinde HKCU\Environment.

Özellikle 'sistem çapında' istediniz. Bunun için, değişken-değer çiftini /etc/environmentVEYA'ya ekleyebilirsiniz /etc/profile.d/<yourfile>. Birincisi pam, ikincisi ise pam ile değerlendirilir /bin/sh. Böylece, /etc/profile.d/<yourfile>eklersiniz variable=value; export variable. (bash da izin verir export variable=value). Çünkü /etc/environmenteklersiniz variable=value.

Kullanıcı başına eşdeğerler ~/.pam_environmentve şeklindedir ~/.profile.

Ayrıca bkz: https://help.ubuntu.com/community/EnvironmentVariables


7

Ortam değişkenlerini komut satırında dışa aktarabilirsiniz, ancak zaten geçerli işlemlerde, yalnızca geçerli işlemde ve alt işlemlerinde etkin ortamı etkilemez. Bu yüzden pratikte ortam değişkenlerini değiştirirken sık sık yeniden giriş yapmanız gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.