ความแตกต่างระหว่าง SETX และ SET ในตัวแปรสภาพแวดล้อมใน Windows คืออะไร


63

ความแตกต่างระหว่างSETXและSETคืออะไร?

ตามความเข้าใจของฉัน:
ทั้งสองถูกใช้เพื่อตั้งค่าตัวแปรสภาพแวดล้อม
SETXสำหรับตัวแปรผู้ใช้
SETสำหรับตัวแปรเชลล์


3
ลองSET /?และSETX /?- ที่ควรให้ความคิดกับคุณ
Iszi

2
ยังดู SS64 อ้างอิงสำหรับSETและsetX SS64 เป็นข้อมูลอ้างอิงคำสั่งที่ยอดเยี่ยมสำหรับหลายภาษาและสภาพแวดล้อมคำสั่ง - ฉันพบว่ามีประโยชน์อย่างยิ่งสำหรับ CMD และ PowerShell
Iszi



คำตอบ:


83

ฉันกลัวว่ามันไม่ง่ายอย่างนั้น ตัวแปรสภาพแวดล้อมไม่ได้ถูก จำกัด โดยขอบเขตตามที่คุณแนะนำ แต่คุณถูกต้องว่าอายุการใช้งานของค่าในตัวแปรนั้นแตกต่างกันเมื่อเปรียบเทียบคำกริยา

Setปรับเปลี่ยนค่าสภาพแวดล้อมของเชลล์ (หน้าต่าง) ในปัจจุบันและการเปลี่ยนแปลงจะพร้อมใช้งานทันที แต่เป็นชั่วคราว การเปลี่ยนแปลงจะไม่ส่งผลกระทบต่อเชลล์อื่น ๆ ที่กำลังทำงานอยู่และทันทีที่คุณปิดเชลล์ค่าใหม่จะหายไปจนกว่าจะถึงเวลาที่คุณรันการตั้งค่าอีกครั้ง

setxแก้ไขค่าอย่างถาวรซึ่งมีผลต่อเชลล์ในอนาคตทั้งหมด แต่ไม่ได้แก้ไขสภาพแวดล้อมของเชลล์ที่รันอยู่แล้ว คุณต้องออกจากเชลล์และเปิดใหม่ก่อนที่การเปลี่ยนแปลงจะพร้อมใช้งาน แต่ค่าจะยังคงถูกแก้ไขจนกว่าคุณจะเปลี่ยนอีกครั้ง

ดูตัวอย่างได้ที่นี่: http://batcheero.blogspot.com/2008/02/set-and-setx.html


13
ที่เขียนได้ดีมากฉันจะเพิ่มแม้ว่า setX ที่มีการเปลี่ยนแปลงรีจิสทรี
barlop

จริงๆแล้วมันเรียบง่ายกว่าที่อธิบายไว้ที่นี่ มีตัวแปรสภาพแวดล้อม "ผันผวน" ที่ต้องคำนึงถึง และในบางกรณีรายการตัวแปรที่แสดงโดยคำสั่ง SET จะแตกต่างกันไปขึ้นอยู่กับว่าผู้ใช้เรียกใช้คำสั่ง "ยกระดับ" หรือไม่
kreemoweet

10

ที่จริงเราสามารถตั้งค่าตัวแปรได้สามขอบเขต:
1. เชลล์
2. ผู้ใช้
3. ระบบ (เครื่องจักร) หรือทั่วโลก

SET: สร้างหรืออัพเดตขอบเขตเชลล์ปัจจุบันสำหรับชั่วคราว

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: สร้างหรือปรับปรุงตัวแปรสภาพแวดล้อมผู้ใช้ปัจจุบันเป็นแบบถาวร

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 และระบบสภาพแวดล้อม

ป้อนคำอธิบายรูปภาพที่นี่


3

การเพิ่มจุดที่ผู้ตอบคำถามคนอื่นพลาด

ในการตั้งค่าตัวแปรสภาพแวดล้อมของระบบแทนตัวแปรสภาพแวดล้อมของผู้ใช้เราเพียงแค่ต้องใช้ตัวเลือก / m ในคำสั่ง setx และเรียกใช้จากพรอมต์คำสั่งผู้ดูแลระบบ

setx variable value /m

ตัวอย่าง: เปิดพรอมต์คำสั่งในฐานะผู้ดูแลและเรียกใช้

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

คำอธิบาย: คำสั่งดังกล่าวจะผนวก "C: \ Users \ User \ Libs" ให้กับตัวแปรเส้นทางที่มีอยู่แล้ว (ตัวแปรสภาพแวดล้อมของระบบ)

หากไม่มีอาร์กิวเมนต์/ mมันจะทำการเปลี่ยนแปลงหรือสร้างตัวแปรเส้นทางระดับผู้ใช้เท่านั้น

จากคู่มือผู้ใช้ setx

/ M ระบุว่าตัวแปรควรถูกตั้งค่าในสภาพแวดล้อมระบบ (HKEY_LOCAL_MACHINE) ค่าเริ่มต้นคือการตั้งค่าตัวแปรภายใต้สภาพแวดล้อม HKEY_CURRENT_USER

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.