แนวทางปฏิบัติที่ดีที่สุดสำหรับ Windows PATH / การจัดการตัวแปรสภาพแวดล้อม?


22

ตอนนี้มันเป็นระเบียบ ทุกครั้งที่ฉันติดตั้งโปรแกรมใหม่ที่ทำสิ่งเล็กน้อยในบรรทัดคำสั่งฉันต้องเพิ่มโปรแกรมนั้นลงในพา ธ ในความเป็นจริงฉันกำลังพัฒนาทับทิมและแม้กระทั่งอัญมณี (ปลั๊กอิน / ส่วนขยาย) บางครั้งก็มีไฟล์ปฏิบัติการของตัวเองและถูกเก็บไว้ในโฟลเดอร์ที่แตกต่างกัน มันถึงจุดที่ฉันผลักดันสามสิบเส้นทางในตัวแปรสภาพแวดล้อม PATH ของฉัน

ฉันระมัดระวังในการคัดลอกและวางพวกเขาไปยังโฮมโฟลเดอร์ของแปลก ๆ และกำหนดเส้นทางไปยังที่นั้น มันแค่รู้สึกผิด มีแนวทางปฏิบัติที่ดีที่สุดที่ฉันพลาดไปไหม?


นี่เป็นคำถามที่ยอดเยี่ยมมาก - โปรแกรมที่ทำงานอยู่นั้นง่ายสำหรับ UNIX แต่มันก็เจ็บปวดกับ Windows เป็นที่น่าเสียดายที่ทางแก้ปัญหาเดียวยังคงดูเหมือนงานหนักเช่นนี้ ...
user10550

คำตอบ:


13

มีสาธารณูปโภคเล็ก ๆ ในตัวอยู่ใน%UserProfile%\Appsโฟลเดอร์ของฉันเช่นผู้จัดเก็บและอื่น ๆ จากนั้นมีจำนวนไฟล์แบตช์ที่ฉันเขียนและใช้บ่อยซึ่งอยู่ใน%UserProfile%\Batchesนั้น สำหรับส่วนที่เหลือฉันเพิ่งเพิ่มพวกเขาไปยังPATHซึ่งจะทำโดยการติดตั้งหรือด้วย

setx PATH "%PATH%;%CD%"

จากไดเรกทอรีที่เหมาะสม จำนวนเส้นทางที่ควรจะกลายเป็นปัญหาถ้าเนื้อหายาวเกินไป (มีการจำกัดความยาวสำหรับตัวแปรสภาพแวดล้อม)

คุณสามารถ (และฉันทำ) เขียนไฟล์แบทช์แรปเปอร์ขนาดเล็กสำหรับโปรแกรมดังกล่าว เพียงคัดลอก / hardlinking / symlinking ปฏิบัติการไปยังไดเรกทอรีอื่นจะไม่ทำงานบน Windows แต่คุณสามารถสร้างแบทช์ไฟล์ได้ง่ายเช่นโปรแกรม Foo:

@"%ProgramFiles%\Foosoft Foo\foo.exe" %*

PATHและจากนั้นคุณสามารถเพิ่มโฟลเดอร์ที่คุณเก็บไฟล์เหล่านั้นไปยังชุดของคุณ


ไฟล์แบตช์สำหรับห่อเหล่านี้ทำงานอย่างไร พวกเขาทำงานตรงตามที่ต้องการเส้นทางจริงหรือไม่? ถ้าเป็นเช่นนี้มันน่าทึ่ง
Justin L.

@Justin: พวกเขาเพียงแค่มอบหมายข้อโต้แย้งทั้งหมดที่กำหนดให้กับไฟล์แบทช์ให้กับโปรแกรมจริง คุณจะต้องรู้จักตัวเอง
Joey

หืมมม; ฉันควรชี้แจง - มีความแตกต่างการทำงานระหว่างการเพิ่มไดเรกทอรีของไบนารีไปยัง PATH และสร้างไฟล์ชุด wapper ของไบนารีลงในไดเรกทอรีที่กำหนดเองที่อยู่ในเส้นทางหรือไม่
Justin L.

@Justin: หากคุณใช้แบทช์ไฟล์ในแบทช์ไฟล์อีกครั้งนั่นก็คือ นอกเหนือจากนั้นฉันก็ไม่ทราบเลย
Joey

@ โจอี้ฉันชอบความคิดของ wrapper เหมาะสำหรับการเปิดตัวโปรแกรมจาก cmd แต่เมื่อเริ่มต้นจากการเริ่มต้น .. รันมันเป็นสิ่งที่รบกวนสำหรับหน้าต่าง cmd ที่จะกระโดดขึ้นก่อนที่โปรแกรมจะเปิดตัวคุณมีวิธีแก้ไขไหม? ดูเหมือนว่าหนึ่งอาจรวมไดเรกทอรีสำหรับโปรแกรมทั้งหมดในเส้นทางและปล่อยให้มันยาว ใกล้มากแล้ว!
barlop

10

ฉันไม่แน่ใจเกี่ยวกับวิธีปฏิบัติที่ดีที่สุดเฉพาะใด ๆ แต่ฉันชอบการใช้เครื่องมือ GUI PATH Editor เพื่อจัดการตัวแปร PATH เพื่อให้สามารถบำรุงรักษาได้อย่างชัดเจน

รายชื่อ PATH Editor -

เครื่องมือแก้ไขสภาพแวดล้อมอย่างรวดเร็ว

ตัวแก้ไขเส้นทาง Redmond


บรรณาธิการแบบกราฟิกอาจทำให้สิ่งต่าง ๆ ง่ายขึ้น heh
Justin L.

ตัวแก้ไข Redmond PATH นั้นเป็นสิ่งที่ฉันกำลังมองหา +1
นาธานริดลีย์

คำถามเกี่ยวกับการจัดการตัวแปรไม่เพียง แต่การเพิ่มรายการ ดังนั้นนี่คือคำตอบที่ถูกต้องที่สุดและ IMO เป็นแนวปฏิบัติที่ดีที่สุดเนื่องจากโซลูชันอื่น ๆ ซ่อนเนื้อหาส่วนใหญ่ของตัวแปร PATH
taurelas

2

ตอนนี้เครื่อง Windows ส่วนใหญ่มาพร้อมกับ PowerShell ฉันใช้คำสั่ง sal / Set-Alias ​​จำนวนมากในโปรไฟล์ผู้ใช้ของฉันดังนั้นหากแอปมีแอปเพียงหนึ่งหรือสองแอพที่ฉันใช้ฉันจะสร้างนามแฝงแทนคำสั่งสองคำนั้น โฟลเดอร์แอปทั้งหมดไปยังเส้นทาง ตัวอย่างเช่น SQL Management Studio, Notepad ++, เครื่องมือไฟฟ้า TFS (เครื่องมือบรรทัดคำสั่ง, tfpt.exe) ฉันคัดลอกโปรไฟล์ผู้ใช้ของฉันข้ามเครื่องดังนั้นสิ่งนี้จะช่วยให้ฉันตรวจสอบการมีอยู่ของแอพนั้นในเครื่องปัจจุบันก่อนที่จะสร้างนามแฝง (บางครั้งก็เตือนว่าไม่ได้ติดตั้งแอพ)

filter ctQuoteString { "`"$_`"" }
filter ctResolvePath { Resolve-Path $_ | select -ExpandProperty Path | ctQuoteString } # used in Edit.ps1

$nppExe = "C:\Program Files (x86)\Notepad++\notepad++.exe"
if ((Test-Path variable:\nppExe) -and (Test-Path $nppExe)) {
    function EditNotepadPP { 
        param ([parameter(ValueFromPipelineByPropertyName=$true)][Alias("FullName","FileName")]$Path) 
        begin { if (! $nppExe) { throw 'variable $nppExe is not defined' } }
        process {
            $Path | ctResolvePath | % { # ctResolvePath will get full path and surround with quotes
                & $nppExe $_
            }
            #AddEditHistory $Path #if you need detailed time tracking, might help to create a log what files you're editting
       } 
    }
    Set-Alias npp EditNotepadPP
}

# I have similar functions for other apps.
Set-Alias vs EditVS
Set-Alias tfe EditTFCheckout
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.