Sự khác biệt giữa SETX và SET trong các biến môi trường trong Windows


63

Sự khác biệt giữa SETXvà là SETgì?

Theo hiểu biết của tôi:
Cả hai được sử dụng để đặt các biến môi trường
SETXlà cho các biến người dùng.
SETdành cho các biến shell.


3
Hãy thử SET /?SETX /?- điều đó sẽ cung cấp cho bạn một số ý tưởng.
Iszi

2
Ngoài ra, xem tài liệu tham khảo SS64 cho SETSETX . SS64 là một tài liệu tham khảo lệnh tuyệt vời cho một số ngôn ngữ và môi trường lệnh - Tôi thấy nó đặc biệt tiện dụng cho CMD & PowerShell.
Iszi



Câu trả lời:


83

Tôi sợ nó không đơn giản như vậy. Các biến môi trường không bị giới hạn bởi phạm vi, như bạn đề xuất, nhưng bạn đúng rằng thời gian tồn tại của giá trị trong biến là khác nhau khi so sánh các động từ.

Setsửa đổi các giá trị môi trường của shell hiện tại (cửa sổ) và thay đổi có sẵn ngay lập tức, nhưng nó chỉ là tạm thời. Thay đổi sẽ không ảnh hưởng đến các shell khác đang chạy và ngay sau khi bạn đóng shell, giá trị mới sẽ bị mất cho đến khi bạn chạy lại thiết lập.

setxsửa đổi giá trị vĩnh viễn, ảnh hưởng đến tất cả các shell trong tương lai, nhưng không sửa đổi môi trường của các shell đã chạy. Bạn phải thoát khỏi trình bao và mở lại nó trước khi thay đổi có sẵn, nhưng giá trị sẽ vẫn được sửa đổi cho đến khi bạn thay đổi lại.

Xem ở đây để biết ví dụ: http://batcheero.blogspot.com/2008/02/set-and-setx.html


13
Điều đó được viết rất tốt, mặc dù vậy, tôi sẽ thêm rằng setx thay đổi sổ đăng ký
barlop

Nó thực sự thậm chí còn đơn giản hơn so với mô tả ở đây. Có những biến môi trường "không ổn định" cần phải chú ý. Và, trong một số trường hợp, danh sách các biến được hiển thị bởi lệnh SET sẽ khác nhau tùy thuộc vào việc người dùng có gọi dấu nhắc lệnh "nâng cao" hay không.
kreemoweet

10

Trên thực tế, chúng ta có thể đặt biến ở ba phạm vi:
1. Shell
2. Người dùng
3. Hệ thống (Máy) hoặc Toàn cầu

SET: Tạo hoặc Cập nhật phạm vi shell hiện tại tạm thời.

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: Tạo hoặc Cập nhật các biến môi trường người dùng hiện tại vĩnh viễn.

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

Trong GUI người dùng và các biến môi trường hệ thống.

nhập mô tả hình ảnh ở đây


3

Thêm một điểm đã bị bỏ qua bởi những người trả lời khác.

Để đặt Biến môi trường hệ thống thay vì biến môi trường người dùng, chúng ta chỉ cần sử dụng tùy chọn / m trong lệnh setx và chạy nó từ Dấu nhắc lệnh (Quản trị viên) nâng cao.

setx variable value /m

Ví dụ: Mở Command prompt với tư cách quản trị viên và chạy

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

Giải thích: Lệnh trên sẽ nối "C: \ Users \ User \ Libs" vào Biến đường dẫn đã tồn tại (Biến môi trường hệ thống).

Nếu không có đối số / m , nó sẽ thực hiện thay đổi hoặc chỉ tạo biến Đường dẫn cấp độ người dùng.

Từ hướng dẫn sử dụng setx,

/ M Chỉ định rằng biến phải được đặt trong môi trường toàn hệ thống (HKEY_LOCAL_MACHINE). Mặc định là đặt biến trong môi trường HKEY_CURRENT_USER.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.