ทำไมฉันสามารถรันโปรแกรมที่ไม่ได้อยู่ในตัวแปรสภาพแวดล้อม PATH ของฉันได้?


9

ผมก็สงสัยว่าทำไมคำสั่งjava -versionเป็นทั่วโลกสามารถเข้าถึงได้?

ฉันสามารถเรียกใช้จากไดเรกทอรีใด ๆ และการทำงาน:

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

มันทำงานยังไง?

นี่คือสิ่งที่PATHตัวแปรระบบของฉันดูเหมือนว่า:

C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

สำหรับฉันjava.exeตั้งอยู่ใน%programfiles%\java\jre7\bin


2
ดูที่นี่
Daniel Beck

ฉันไม่มีรายละเอียดอยู่ในขณะนี้ซึ่งเป็นเหตุผลว่าทำไมนี่คือความคิดเห็นและไม่ใช่คำตอบ แต่ถ้าjava.exe(หรือjava.comเป็นต้น) ไม่อยู่ในรายการของคุณPATHมีรายการรีจิสตรีอื่นที่สามารถระบุเส้นทางที่สามารถใช้งานได้
Mark Hurd

1
@MarkHurd cmd (และ CreateProcess) ไม่ได้ตรวจสอบรายการรีจิสทรีของ App Paths เพียง ShellExecute [ดังนั้นจึงเรียกใช้กล่องโต้ตอบ Run]
Random832

@MarkHurd เป็นที่คุณคาดว่ามันไม่ได้ในตัวแปรเส้นทางของฉัน ..
Pacerier

1
@Pacerier ปฏิบัติการ Java พบได้ใน% SystemRoot% \ System32 \
Dwayne Hinterlang

คำตอบ:


13

โดยทั่วไปจะมีกลุ่มของไดเรกทอรีที่ไฟล์ปฏิบัติการที่ใช้ซ้ำ ๆ จะถูกค้นพบโดย Windows ของคุณ แต่ในทางปฏิบัติไม่มีเหตุผลใดที่จะใช้คำสั่งเป็นโกลบอลหรือไม่ นักพัฒนาเคยรวมไว้เป็น "ทั่วโลก" ทุกที่ที่ต้องการพวกเขามีอิสระที่จะทำ หากคุณต้องการที่จะใช้คำสั่งใด ๆ ที่เป็น "ระดับโลก" คุณจะต้องเพิ่มคำสั่งของคุณเป็น"Windows สิ่งแวดล้อมตัวแปร" ในการทำเช่นนี้คุณสามารถใช้วิธีการต่อไปนี้:

  1. การเพิ่มด้วยตนเองด้วย "คุณสมบัติของระบบ Windows": ป้อนคำอธิบายรูปภาพที่นี่

  2. การใช้เครื่องมือเสริม Setx.exe:

ไม่ได้เป็นส่วนหนึ่งของการตั้งค่า Windows XP มาตรฐาน แต่เครื่องมือบรรทัดคำสั่งที่ชื่อว่า setx.exe จะรวมอยู่ในเครื่องมือสนับสนุน Windows XP Service Pack 2 เครื่องมือนี้ขยายคำสั่ง set เพื่อให้การเปลี่ยนแปลงถาวรในตัวแปรสภาพแวดล้อมสามารถทำได้ ตัวอย่างเช่นหากต้องการเพิ่มโฟลเดอร์ C: \ New Folder ไปยังพา ธ คำสั่งจะเป็น

setx path "%PATH%;C:\New Folder" 
  1. สคริปต์สำหรับรายการตัวแปรสภาพแวดล้อม:

คำสั่ง "Set" สามารถใช้ในพรอมต์คำสั่งพร้อมกับการเปลี่ยนเส้นทางไปยังไฟล์ข้อความเพื่อสร้างรายการของตัวแปรสภาพแวดล้อมปัจจุบัน คำสั่งอาจจะ

set > C:\env_list.txt 

ชื่อไฟล์ "C: \ env_list.txt" สามารถถูกแทนที่ด้วยตัวเลือกของคุณ

Microsoft ยังมี VBScript ที่แสดงรายการตัวแปรสภาพแวดล้อมในหน้านี้

  1. คีย์รีจิสทรีสำหรับตัวแปรสภาพแวดล้อม:

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

HKEY_CURRENT_USER\Environment

พบตัวแปรระบบในคีย์:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

โปรดทราบว่าตัวแปรสภาพแวดล้อมใด ๆ ที่อยู่ในรูปแบบที่จำเป็นต้องขยาย (ตัวอย่างเช่น% PATH%) จะต้องเก็บไว้ในรีจิสทรีเป็นค่ารีจิสทรี REG_EXPAND_SZ การแก้ไข Registry นั้นใช้สำหรับสคริปต์ที่ใช้โดยผู้ดูแลระบบและไม่แนะนำสำหรับผู้ใช้พีซีทั่วไป

คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับมันได้ที่นี่


1
อย่างไรก็ตาม java.exe %programfiles%\java\jre7\binตั้งอยู่ใน โฟลเดอร์นี้ไม่ปรากฏในตัวแปร Path ของระบบของฉัน ..
Pacerier

7
Java.exe พบได้ใน% SystemRoot% \ System32 \ ซึ่งจะปรากฏในตัวแปร PATH ของคุณ
Dwayne Hinterlang

5

"คำสั่งทั่วโลก" ถูกกำหนดโดยตัวแปรสภาพแวดล้อมของคุณ

ขึ้นอยู่กับระบบปฏิบัติการที่คุณใช้ไปเพื่อตั้งค่าให้แตกต่างกัน

วิธีที่ธรรมดาที่สุดคือโดย

คลิกขวาที่ "My Computer" เลือก "Properties"

ใน Windows7 คุณจะต้องเลือก "การตั้งค่าระบบขั้นสูง" ในบานหน้าต่างด้านซ้าย

เมื่อคุณเปิดกล่องโต้ตอบคุณสมบัติของระบบแล้วให้เลือกแท็บ "ขั้นสูง"

ที่ด้านล่างมีปุ่ม "ตัวแปรสภาพแวดล้อม"

ในไดอะล็อกตัวแปรสภาพแวดล้อมคุณจะสามารถกำหนดค่าตัวแปรสภาพแวดล้อมต่อผู้ใช้หรือสำหรับทั้งระบบ

ตัวอย่างเช่น "เส้นทาง" ตัวแปรของระบบที่เรียบง่ายจะมีลักษณะเช่นนี้ ...

C: \ Program Files \ Java \ jre6 \ bin ; C: \ Ruby19 \ bin;

สามารถเรียกใช้งานได้ในพา ธ เหล่านี้โดยตรงจาก Command Line

เหตุผลที่คุณสามารถเรียก calc, mspaint, cmd ทั้งหมดจาก Run Dialog ได้เนื่องจาก C: \ windows \ system32 อยู่ในตัวแปรสภาพแวดล้อมของ Path

คุณสามารถเพิ่มเส้นทางที่กำหนดเองลงในตัวแปรสภาพแวดล้อมได้โปรดระวังอย่าทำการแทนที่เส้นทางที่มีอยู่และแยกเส้นทางโดยใช้เซมิโคลอน ";"

จากนั้นคุณสามารถเรียกใช้ไฟล์ปฏิบัติการได้จากพา ธ นั้นโดยตรงในบรรทัดคำสั่งโดยไม่ต้องพิมพ์พา ธ ทั้งหมดเช่นคำสั่ง java -version

สำหรับการอ่านเพิ่มเติมโปรดดูลิงค์ต่อไปนี้ ...

ตัวแปรสภาพแวดล้อม

ทำความเข้าใจและกำหนดค่าตัวแปรสภาพแวดล้อม

Java.exe ค้นหาจากการติดตั้งใหม่


3

ต่อไปนี้เป็นวิธีง่าย ๆwhichที่แสดงคำสั่งฮิตทั้งหมดใน PATH สำหรับส่วนขยาย PATHEXT ปัจจุบัน:

@for %%I in ("%path:;=\" "%") do @for %%E in (%pathext:;= %) do @if exist "%%~dpI%1%%E" @echo %%~dpI%1%%E

ที่ใส่ในwhere.cmd(ให้whichจะมาจากที่อื่นถ้าคุณได้รับมัน!) where javaและเรียกมันด้วย

ตอนนี้ในความคิดเห็นของฉันข้างต้นผมแนะนำว่าถ้าjavaไม่ได้ปรากฏในของคุณPATHคุณสามารถตรวจสอบในHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths [อ้างอิง]แต่หลังจากที่จริงพยายามนี้ก็ไม่ได้ทำงานกับบรรทัดคำสั่งเฉพาะกับสิ่งที่ใช้ShellExecuteExเช่นStart คลิก Runและstartคำสั่ง CLI


2

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

ดูคำตอบอื่น ๆ สำหรับวิธีต่างๆในการตั้งค่าตัวแปร PATH

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