web-dev-qa-db-ja.com

環境変数のTEMPとTMP

これらの2つの環境変数TEMPおよびTMPを使用することは正しいですか?一方に変更を加えた場合、もう一方にも同じ変更を加える必要がありますか?たとえば、cygwinをインストールしていて、その指示でPATH変数を変更するように指示されましたが、TEMPとTMPの両方にパス変数があります。 2つの違いは何ですか?

screen shot of environment variables

なぜこれを見たいのかわからないが、パスの値は次のとおりです。TEMPのパス:C:\ Program Files\Common Files\Microsoft Shared\Windows Live; C:\ Program Files(x86)\ Common Files\Microsoft Shared\Windows Live; C:\ Program Files(x86)\ NVIDIA Corporation\PhysX\Common;%SystemRoot%\ system32;%SystemRoot%;%SystemRoot%\ System32\Wbem;%SYSTEMROOT%\ System32\WindowsPowerShell\v1.0 \; C:\ Program Files(x86)\ Common Files\Acronis\SnapAPI \; C:\ Program Files(x86)\ Windows Kits\8.1\Windows Performance Toolkit \; C:\ Program Files\Microsoft SQL Server\110\Tools\Binn \; C:\ Program Files(x86)\ Windows Live\Shared

TMPのパス:%USERPROFILE%\ AppData\Local\Temp

22
Celeritas

具体的に質問に答えるには:

2つの違いは何ですか?

違いはありません。これらは、同じパスの異なるエイリアスです。 Markが述べたように、一部のプログラムは%TMP%を使用し、他のプログラムは%TEMP%を使用します。 Windowsはデフォルトで両方を同じパスに割り当てて、異なるプログラム間の一貫性を確保し、同じプログラムで両方を使用するなどの開発者のエラーから保護します。

また、%Path%変数は、%TMP%または%TEMP%とは関係ありません。 %Path%はシステム変数ですが、%TMP%%TEMP%はどちらもシステム変数であり、ユーザー変数でもあります。システムバージョンはC:\windows\TEMPにリンクしています。簡単なテストで明らかなように、これらの変数を実際に使用できるのは「システム」ユーザーのみです。コマンドウィンドウを開き、echo %TMP%またはecho %TEMP%を入力すると、ユーザーバージョンの変数で定義されているパスが返されます。ただし、%Path%にはユーザーバージョンがないため(デフォルト)、echo %Path%を実行すると、システム変数の値が返されます。

プログラムが「パス」システム変数をどのように使用するかは完全にはわかりません。これは、cygwinが参照していたものと思われますが、TMPやTEMPとは関係がないことを確認できます。

それがあなたの質問に答えることを願っています。

編集:%Path%の意味を思い出しました。ファイルへのフルパスを使用しなくても、変数で指定されたパスのいずれかにあるファイルにアクセスできます。たとえば、「C:\ myprog\bin」を%Path%に追加すると、myprog --helpのように完全なパスを入力しなくても、コマンドラインにmyprog"C:\myprog\bin\myprog.exe" --helpなどを入力できます。もちろん、コマンドラインの使用は一例にすぎません。これにより、すべてのプログラムまたはインターフェイスがフルパスを必要とせずにあらゆる種類のファイルにアクセスできます。

11
RyanayR

異なるプログラムは異なるプログラムを使用するため、両方が必要です。

非常にひどく書かれたプログラムだけが同じものを指すと仮定して両方を使用するので、それらを同じ場所に設定する必要はありません。

/ tmpは、環境変数TMPDIRを使用するUnixの一時ファイル用の共通ディレクトリです。

メモリから(80年代半ばにこれを使用したとき)TEMPはDOSで使用された元のメモリであり、TMPはUnixから/ tmpに一致するように移植されたプログラムで使用される傾向がありました。しかし、コントロールがなかったためにプログラムがDOSで書かれたとき、異なる開発者が異なるものを使用しました。最近のWindowsでは、Microsoftのデフォルトはどちらも同じです doc を参照してください

3
user151019