Apa perbedaan antara SETX dan SET dalam variabel lingkungan di Windows

63

Apa perbedaan antara SETXdan SET?

Sesuai pemahaman saya:
Keduanya digunakan untuk mengatur variabel lingkungan
SETXuntuk variabel pengguna.
SETadalah untuk variabel shell.

Premraj
sumber
3
Coba SET /?dan SETX /?- itu akan memberi Anda beberapa ide.
Iszi
2
Juga, lihat referensi SS64 untuk SET dan SETX . SS64 adalah referensi perintah yang bagus untuk beberapa bahasa dan lingkungan perintah - Saya merasa sangat berguna untuk CMD & PowerShell.
Iszi

Jawaban:

83

Saya khawatir itu tidak sesederhana itu. Variabel lingkungan tidak dibatasi oleh ruang lingkup, seperti yang Anda sarankan, tetapi Anda benar bahwa umur nilai dalam variabel berbeda ketika membandingkan kata kerja.

Setmemodifikasi nilai lingkungan shell saat ini (jendela), dan perubahan tersedia segera, tetapi bersifat sementara. Perubahan tidak akan memengaruhi shell lain yang sedang berjalan, dan segera setelah Anda menutup shell, nilai baru hilang sampai waktu Anda menjalankan set lagi.

setxmemodifikasi nilai secara permanen, yang memengaruhi semua shell masa depan, tetapi tidak mengubah lingkungan shell yang sudah berjalan. Anda harus keluar dari shell dan membukanya kembali sebelum perubahan tersedia, tetapi nilainya akan tetap dimodifikasi hingga Anda mengubahnya lagi.

Lihat di sini untuk contoh: http://batcheero.blogspot.com/2008/02/set-and-setx.html

Frank Thomas
sumber
13
itu ditulis dengan sangat baik, saya akan menambahkan, bahwa setx mengubah registri
barlop
Ini sebenarnya bahkan tidak sesederhana yang dijelaskan di sini. Ada variabel lingkungan "volatile" yang harus diperhatikan. Dan, dalam beberapa keadaan, daftar variabel yang ditunjukkan oleh perintah SET akan berbeda tergantung pada apakah pengguna telah meminta prompt perintah "ditinggikan" atau tidak.
kreemoweet
10

Sebenarnya kita dapat mengatur variabel pada tiga cakupan:
1. Shell
2. Pengguna
3. Sistem (Mesin) atau Global

SET: Buat atau Perbarui ruang lingkup shell saat ini untuk sementara.

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: Buat atau Perbarui variabel lingkungan pengguna saat ini untuk permanen.

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 ""

Dalam variabel lingkungan Pengguna dan Sistem GUI.

masukkan deskripsi gambar di sini

Premraj
sumber
3

Menambahkan poin yang terlewatkan oleh penjawab lain.

Untuk mengatur Variabel Lingkungan Sistem daripada Variabel Lingkungan Pengguna, kita hanya perlu menggunakan opsi / m dalam perintah setx dan menjalankannya dari Prompt Perintah (Administrator) yang lebih tinggi.

setx variable value /m

Contoh: Buka Command prompt sebagai administrator dan jalankan

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

Penjelasan: Perintah di atas akan menambahkan "C: \ Users \ User \ Libs" ke Variabel Path yang sudah ada (Variabel Lingkungan Sistem).

Tanpa argumen / m , itu akan membuat perubahan atau membuat variabel Path tingkat Pengguna saja.

Dari manual pengguna setx,

/ M Menentukan bahwa variabel harus ditetapkan di lingkungan sistem lebar (HKEY_LOCAL_MACHINE). Standarnya adalah mengatur variabel di bawah lingkungan HKEY_CURRENT_USER.

Renju Jose
sumber