Praktik terbaik untuk Windows PATH / pengelolaan variabel lingkungan?

22

Saat ini, sangat berantakan. Setiap kali saya menginstal program baru yang melakukan sesuatu yang sepele di baris perintah, saya harus menambahkannya ke path. Bahkan, saya mengembangkan Ruby dan bahkan permata (plugin / ekstensi) kadang-kadang memiliki executable mereka sendiri, dan disimpan dalam folder yang berbeda dan akhirnya saya harus menambahkan beberapa jalur per aplikasi, juga. Sudah sampai pada titik bahwa saya mendorong tiga puluh path dalam variabel lingkungan PATH saya.

Saya berhati-hati untuk menyalin dan menempelkannya ke folder rumah dan mengatur jalur untuk itu; rasanya salah. Apakah ada praktik terbaik yang mapan yang saya lewatkan?

Justin L.
sumber
Ini adalah pertanyaan yang luar biasa - menjalankan program sangat mudah di UNIX tetapi menyusahkan Windows. Sayang sekali bahwa satu-satunya solusi masih tampak seperti kerja keras ...
user10550

Jawaban:

13

Sejumlah utilitas mandiri kecil berada di %UserProfile%\Appsfolder saya , seperti arsip dan sejenisnya. Lalu ada sejumlah file batch yang saya tulis dan sering digunakan yang berada di %UserProfile%\Batches. Untuk selebihnya, saya hanya menambahkannya ke PATH, yang dilakukan oleh installer atau dengan

setx PATH "%PATH%;%CD%"

dari direktori yang sesuai. Jumlah jalur di sana mungkin seharusnya hanya menjadi masalah jika isinya terlalu panjang (ada batasan panjang untuk variabel lingkungan).

Anda dapat (dan kadang-kadang saya lakukan) menulis file batch wrapper kecil untuk program tersebut. Cukup menyalin / menghubungkan / menghubungkan tautan yang dapat dieksekusi ke direktori lain kemungkinan tidak akan berfungsi pada Windows tetapi Anda dapat dengan mudah membuat file batch, misalnya untuk program Foo:

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

dan Anda kemudian dapat menambahkan folder tempat Anda menyimpan file batch itu ke file Anda PATH.

Joey
sumber
Bagaimana cara kerja file batch wrapper ini? Apakah mereka bekerja persis seperti membutuhkan jalan yang sebenarnya? Jika demikian, ini luar biasa.
Justin L.
@ Justin: Mereka hanya mendelegasikan semua argumen yang diberikan ke file batch ke program yang sebenarnya. Di mana itu berada, Anda harus mengenal diri sendiri.
Joey
Hm; Saya harus mengklarifikasi - apakah ada perbedaan fungsional antara menambahkan direktori biner ke PATH dan membuat file batch wapper dari biner ke direktori kustom yang ada di PATH?
Justin L.
@ Justin: Jika Anda menggunakan file batch dalam file batch lagi, maka ada. Selain itu saya tidak mengetahui adanya.
Joey
@ Joey, saya suka ide pembungkus, bagus untuk meluncurkan program dari cmd, tetapi ketika meluncurkan dari awal..menjalankan itu adalah gangguan bagi jendela cmd untuk melompat sebelum program diluncurkan, apakah Anda punya cara mengatasinya? tampaknya orang mungkin juga meletakkan direktori untuk semua program di jalan dan membiarkannya lama. begitu dekat namun sejauh ini!
barlop
10

Saya tidak yakin tentang praktik terbaik tertentu. Tapi saya lebih suka menggunakan alat Editor GUI PATH untuk mengelola variabel PATH. Sehingga bisa dipelihara dengan jelas.

Daftar Editor PATH -

Editor Lingkungan Cepat

Redmond PATH Editor

ukanth
sumber
Editor grafis mungkin membuat segalanya lebih mudah, heh
Justin L.
Editor Redmond PATH itu persis seperti yang saya cari. +1
Nathan Ridley
Pertanyaannya adalah tentang MENGELOLA variabel, tidak hanya menambahkan item. Jadi ini adalah jawaban yang paling benar dan IMO praktik terbaik karena solusi lain menyembunyikan sebagian besar isi variabel PATH.
taurelas
2

Sekarang sebagian besar mesin Windows datang dengan PowerShell, saya menggunakan banyak perintah sal / Set-Alias ​​di profil pengguna saya, jadi jika sebuah aplikasi hanya memiliki satu atau dua aplikasi yang saya gunakan, saya akan membuat alias untuk hanya dua perintah itu daripada menambahkan folder aplikasi keseluruhan ke jalan. Contohnya termasuk SQL Management Studio, Notepad ++, TFS Power Tools (alat baris perintah, tfpt.exe). Saya juga menyalin profil pengguna saya di seluruh mesin, jadi ini memungkinkan saya memeriksa keberadaan aplikasi itu di mesin saat ini sebelum membuat alias (kadang-kadang peringatan jika aplikasi tidak diinstal).

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
yzorg
sumber