Windows PATH /環境変数の管理のベストプラクティス?


22

今のところ、それはそのような混乱です。コマンドラインで些細なことを行う新しいプログラムをインストールするたびに、パスに追加する必要があります。実際、私はRubyで開発しており、gem(プラグイン/拡張機能)にも独自の実行可能ファイルがあり、異なるフォルダに保存されているため、アプリケーションごとにいくつかのパスを追加する必要があります。PATH環境変数に30個のパスをプッシュするようになりました。

ある種のホームフォルダーにそれらをコピーして貼り付け、そのパスを設定するのは慎重です。間違っているように感じます。欠けている確立されたベストプラクティスはありますか?


これは非常に大きな質問です。UNIXではプログラムを実行するのはとても簡単ですが、Windowsでは非常に苦痛です。唯一の解決策は、まだ、このようなハードワークのように見えることをその恥...
user10550

回答:


13

%UserProfile%\Appsアーカイバなど、多くの小さな自己完結型ユーティリティが私のフォルダにあります。それから、私が書いて頻繁に使用する多くのバッチファイルがあります%UserProfile%\Batches。残りについてはPATH、インストーラに追加するか、インストーラーで

setx PATH "%PATH%;%CD%"

適切なディレクトリから。そこにあるパスの数は、コンテンツが長くなりすぎる場合にのみ問題になる可能性があります(環境変数には長さの制限があります)。

そのようなプログラム用の小さなラッパーバッチファイルを書くことができます(時には私もします)。実行可能ファイルを別のディレクトリに単純にコピー/ハードリンク/シンボリックリンクすることはWindowsでは機能しない可能性がありますが、たとえばプログラムFoo用のバッチファイルを簡単に作成できます。

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

そして、それらのバッチファイルを保存するフォルダをに追加できますPATH


これらのラッパーバッチファイルはどのように機能しますか?実際のパスを必要とするのとまったく同じように機能しますか?もしそうなら、これは素晴らしいです。
ジャスティンL.

@Justin:バッチファイルに与えられたすべての引数を実際のプログラムに委任するだけです。それがどこにあるかは、あなた自身を知る必要があります。
ジョーイ

うーん; 明確にする必要があります-バイナリのディレクトリをPATHに追加することと、バイナリのwapperバッチファイルをPATHにあるカスタムディレクトリに作成することの間に機能的な違いはありますか?
ジャスティンL.

@Justin:バッチファイルでバッチファイルを再度使用する場合、あります。それを除けば、私は何も知りません。
ジョーイ

@Joey私はcmdからプログラムを起動するのに適したラッパーのアイデアが好きですが、start..runから起動するとき、プログラムが起動する前にcmdウィンドウがジャンプするのは気が散ります、それを回避する方法はありますか?すべてのプログラムのディレクトリをパスに入れて長くすることもできるようです。まだまだ近い
-barlop

10

特定のベストプラクティスについてはわかりません。ただし、GUI変数エディターツールを使用してPATH変数を管理することを好みます。明確に維持できるように。

PATHエディターのリスト-

高速環境エディター

レドモンドPATHエディター


グラフィカルエディターは物事をずっと簡単にするかもしれないね
ジャスティンL.

そのレドモンドPATHエディターはまさに私が探していたものです。+1
ネイサンリドリー

問題は、アイテムの追加だけでなく、変数の管理に関するものでした。したがって、これが最も正しい答えであり、他のソリューションがPATH変数の内容のほとんどを隠すため、IMOがベストプラクティスです。
taurelas

2

現在、ほとんどのWindowsマシンにはPowerShellが付属しているため、ユーザープロファイルで多くのsal / Set-Aliasコマンドを使用しているため、アプリに使用するアプリが1つまたは2つしかない場合は、アプリフォルダー全体をパスに。例には、SQL Management Studio、Notepad ++、TFS Power Tools(コマンドラインツール、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.