Windows'ta ortam değişkenlerinde SETX ve SET arasındaki fark nedir


63

Arasındaki fark nedir SETXve SET?

Anladığım kadarıyla:
Her ikisi de ortam değişkenlerini ayarlamak için kullanılır,
SETXkullanıcı değişkenleri içindir.
SETKabuk değişkenleri içindir.


3
Deneyin SET /?ve SETX /?- bu size biraz fikir vermeli.
Iszi

2
Ayrıca, SET ve SETX için SS64 referanslarına bakınız . SS64, birkaç dil ve komut ortamları için mükemmel bir komut referansıdır - özellikle CMD ve PowerShell için kullanışlı buluyorum.
Iszi



Yanıtlar:


83

Korkarım o kadar basit değil. Çevre değişkenleri, önerdiğiniz gibi kapsamla sınırlı değildir, ancak fiilleri karşılaştırırken değişkendeki değerin kullanım ömrünün farklı olduğu doğrudur.

SetGeçerli kabuğun (pencerenin) ortam değerlerini değiştirir ve değişiklik hemen yapılabilir, ancak geçicidir. Değişiklik, çalışmakta olan diğer mermileri etkilemeyecek ve kabuğu kapattığınız anda, yeniden çalıştırılana kadar yeni değer kaybedilir.

setxdeğeri, gelecekteki tüm kabuklarını etkileyen kalıcı olarak değiştirir, ancak çalışmakta olan kabukların ortamını değiştirmez. Kabuktan çıkmanız ve değişiklik kullanılabilir duruma gelmeden önce yeniden açmanız gerekir, ancak yeniden değiştirinceye kadar değer değişmeden kalır.

Örnek için buraya bakınız: http://batcheero.blogspot.com/2008/02/set-and-setx.html


13
Bu çok iyi yazılmış, ben
eklerdim

Aslında burada tarif edilenden daha az basit. Dikkat edilmesi gereken "değişken" çevre değişkenleri var. Bazı durumlarda, SET komutu tarafından gösterilen değişkenlerin listesi, kullanıcının "yükseltilmiş" bir komut istemi başlatıp başlatmamasına bağlı olarak değişecektir.
kreemoweet

10

Aslında değişkeni üç kapsamda ayarlayabiliriz:
1. Kabuk
2. Kullanıcı
3. Sistem (Makine) veya Global

SET: Geçici olarak geçerli kabuk kapsamını oluştur veya güncelle.

C:\Users\977246>set /?
Displays, sets, or removes cmd.exe environment variables.

SET [variable=[string]]

  variable  Specifies the environment-variable name.
  string    Specifies a series of characters to assign to the variable.

Type SET without parameters to display the current environment variables.

SETX: Geçerli kullanıcı ortamı değişkenlerini kalıcı olarak oluşturun veya güncelleyin.

C:\Users\977246>setx /?

SetX has three ways of working:

Syntax 1:
    SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]

Syntax 2:
    SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]

Syntax 3:
    SETX [/S system [/U [domain\]user [/P [password]]]]
         /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

To remove the variable set value to empty string as follows

Example: setx path ""

GUI Kullanıcı ve Sistem ortam değişkenlerinde.

görüntü tanımını buraya girin


3

Diğer cevaplayıcılar tarafından kaçırılan bir nokta eklemek.

Kullanıcı Ortamı Değişkeni yerine Sistem Ortamı Değişkenini ayarlamak için, sadece setx komutunda / m seçeneğini kullanmalı ve bunu yükseltilmiş (Yönetici) Bir Komut İstemi'nden çalıştırmalıyız.

setx variable value /m

Örnek: Komut istemini yönetici olarak aç ve çalıştır

setx Path "%Path%;C:\Users\User\Libs" /m

Açıklama: Yukarıdaki komut, mevcut Yol Değişkenine (Sistem Ortamı Değişkeni) "C: \ Users \ Kullanıcı \ Libs" ekleyecektir.

/ M argümanı olmadan, yalnızca Kullanıcı düzeyinde Bir Yol değişkeni üzerinde değişiklik yapar veya oluşturur.

Setx kullanım kılavuzundan,

/ M Değişkenin sistem çapında (HKEY_LOCAL_MACHINE) ortamda ayarlanması gerektiğini belirtir. Varsayılan değer, değişkeni HKEY_CURRENT_USER ortamı altında ayarlamaktır.

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.