Windows PATH / ortam değişkenleri yönetimi için en iyi yöntem?


22

Şu anda, bu çok karışık. Her komut satırında önemsiz şeyler yapan yeni bir program yüklediğimde, onu yola eklemeliyim. Aslında, Ruby üzerinde geliştiriyorum ve hatta taşlar (eklentiler / uzantılar) bazen kendi çalıştırılabilir dosyalarına sahipler ve farklı klasörlerde saklanıyor ve uygulama başına birkaç yol eklemek zorunda kalıyorum. PATH ortam değişkenimde otuz yolu bastığım noktaya geldi.

Bunları bir tür klasöre kopyalayıp yapıştırmak ve buna yol açmak konusunda dikkatliyim; sadece yanlış geliyor. Kaybettiğim yerleşmiş en iyi uygulama var mı?


Bu harika bir sorudur - programları çalıştırmak UNIX'te çok kolaydır, ancak Windows'ta bu kadar acı vericidir. Sadece çözümler hala çok zor bir iş gibi görünüyor ayıp ...
user10550

Yanıtlar:


13

%UserProfile%\AppsKlasörümde, arşivleyiciler ve benzerleri gibi bir dizi küçük bağımsız yardımcı program bulunur . Daha sonra yazdığım ve içinde sıkça kullandığım birçok toplu iş dosyası var %UserProfile%\Batches. Gerisi için, ben sadece PATHbir yükleyici tarafından ya da

setx PATH "%PATH%;%CD%"

Uygun dizinden İçeriğin çok uzaması durumunda, orada muhtemelen yol sayısı yalnızca bir sorun haline gelmelidir (ortam değişkenleri için uzunluk sınırları vardır).

Bu tür programlar için küçük paketleyici toplu iş dosyaları yazabilir (ve bazen ben yaparım). Çalıştırılabilir dosyayı başka bir dizine kopyalamak / sabitlemek / işaretlemek büyük olasılıkla Windows üzerinde çalışmayabilir ancak örneğin Foo programı için kolayca bir toplu iş dosyası oluşturabilirsiniz:

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

ve ardından bu toplu iş dosyalarını depoladığınız klasörü ekleyebilirsiniz PATH.


Bu sarıcı toplu iş dosyaları nasıl çalışır? Tam olarak asıl yolu gerektiren şekilde çalışıyorlar mı? Eğer öyleyse, bu şaşırtıcı.
Justin L.

@Justin: Sadece toplu iş dosyasına verilen tüm argümanları asıl programa devreder. Yaşadığı yer kendini tanımak zorundasın.
Joey

Hımm; Netleştirmeliyim - ikili dizinin dizinini PATH öğesine eklemek ve ikili dosyanın bir wapper toplu iş dosyasını PATH üzerindeki özel bir dizine eklemek arasında herhangi bir işlevsel fark var mı?
Justin L.

@Justin: Toplu iş dosyalarını toplu iş dosyalarında yeniden kullanırsanız, o zaman vardır. Bunun dışında hiçbir şeyin farkında değilim.
Joey

@Joey Ben sarmalayıcı fikrini sevdim, cmd'den programları başlatmak için iyi, ama başlangıçtan itibaren başlatırken ... program başlamadan önce bir cmd penceresinin sıçraması bir dikkat dağıtıcıdır, bunun için bir yol var mı? Biri yoldaki tüm programlar için dizinleri koymak ve uzun sürmesine izin verebilir. çok yakın, şimdiye kadar!
barlop

10

Belirli bir en iyi uygulama hakkında emin değilim. Ancak PATH değişkenlerini yönetmek için GUI PATH Editor araçlarını kullanmayı tercih ediyorum. Böylece açıkça muhafaza edilebilir.

PATH Düzenleyici Listesi -

Hızlı Ortam Düzenleyicisi

Redmond PATH Editör


Grafik editörleri işleri daha kolay hale getirebilir heh
Justin L.

Bu Redmond PATH editörü tam da aradığım şeydi. +1
Nathan Ridley

Soru, sadece maddeleri eklemek değil, değişkeni YÖNETMEK ile ilgiliydi. Yani bu en doğru cevap ve IMO en iyi uygulama, diğer çözümler PATH değişkeninin içeriğinin çoğunu gizliyor.
taurelas,

2

Artık çoğu Windows makinesi PowerShell ile birlikte geldiğine göre, kullanıcı profilimde birçok sal / Set-Alias ​​komutunu kullanıyorum, bu yüzden bir uygulama kullandığım yalnızca bir veya iki uygulama varsa, eklemek yerine sadece bu iki komut için takma ad oluşturacağım yola giden tüm uygulama klasörü. Örnekler arasında SQL Management Studio, Notepad ++, TFS Elektrikli El Aletleri (komut satırı aracı, tfpt.exe) bulunmaktadır. Ayrıca kullanıcı profilimi makineler arasında kopyalarım, bu nedenle, takma adı oluşturmadan önce o uygulamanın mevcut makinede olup olmadığını kontrol etmeme izin verir (bazen uygulama yüklenmemişse uyarı verir).

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.