Ist es richtig, diese beiden Umgebungsvariablen TEMP und TMP zu haben? Wenn ich eine Änderung vornehme, muss ich dann die gleichen Änderungen an der anderen vornehmen? Ich habe zum Beispiel cygwin installiert und die Anweisungen haben mich angewiesen, die PATH-Variable zu ändern, aber sowohl TEMP als auch TMP haben die Pfadvariable. Was ist der Unterschied zwischen den beiden?
Nicht sicher, warum die Benutzer dies sehen möchten, aber hier sind die Werte für den Pfad: Pfad in TEMP: C: \ Programme \ Gemeinsame Dateien \ Microsoft Shared \ Windows Live; C: \ Programme (x86) \ Gemeinsame Dateien \ Microsoft Shared \ Windows Live; C: \ Programme (x86) \ NVIDIA Corporation \ PhysX \ Common;% SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem;% SYSTEMROOT% \ System32 \ WindowsPowerShell \ v1.0 \; C: \ Programme (x86) \ Gemeinsame Dateien \ Acronis \ SnapAPI \; C: \ Programme (x86) \ Windows Kits \ 8.1 \ Windows Performance Toolkit \; C: \ Programme \ Microsoft SQL Server \ 110 \ Tools \ Binn \; C: \ Programme (x86) \ Windows Live \ Shared
Pfad in TMP:% USERPROFILE% \ AppData \ Local \ Temp
quelle
TMP
könnte diejenige sein, die (aufgrund derGetTempFileName
Funktion) zu bevorzugen ...Antworten:
Um die Frage konkret zu beantworten:
Es gibt keinen Unterschied. Sie sind nur verschiedene Aliase für den gleichen Pfad. Wie Mark erwähnte, verwenden einige Programme,
%TMP%
während andere verwenden%TEMP%
. Windows weist beide standardmäßig demselben Pfad zu, um die Konsistenz zwischen verschiedenen Programmen zu gewährleisten und sogar vor Entwicklerfehlern zu schützen, z. B. wenn beide im selben Programm verwendet werden.Beachten Sie auch, dass die
%Path%
Variable nichts mit entweder%TMP%
oder zu tun hat%TEMP%
.%Path%
ist eine Systemvariable, während%TMP%
und%TEMP%
sowohl Systemvariablen als auch Benutzervariablen sind. Die Systemversionen verlinken aufC:\windows\TEMP
. AFAIK, nur der "System" -Benutzer kann diese Variablen tatsächlich verwenden, wie durch einen einfachen Test belegt wird. Öffnen Sie ein Cmd-Fenster und geben Sieecho %TMP%
oder einecho %TEMP%
. Es gibt den in der Benutzerversion der Variablen definierten Pfad zurück. Da es jedoch%Path%
(standardmäßig) keine Benutzerversion gibt, können Sie dies tunecho %Path%
und es wird der Wert der Systemvariablen zurückgegeben.Ich bin mir nicht ganz sicher, wie Programme die Systemvariable "Path" verwenden, auf die sich Cygwin wahrscheinlich bezog. Trotzdem kann ich Ihnen versichern, dass dies nichts mit TMP oder TEMP zu tun hat.
Hoffe das beantwortet deine Frage.
BEARBEITEN: Ich habe mich gerade daran erinnert, wofür
%Path%
es gedacht ist - Sie können auf alle Dateien zugreifen, die sich in einem der in der Variablen angegebenen Pfade befinden, ohne den vollständigen Pfad zu der Datei verwenden zu müssen. Wenn Sie beispielsweise "C: \ myprog \ bin" zu% Path% hinzufügen, können Sie einfachmyprog
odermyprog --help
etc in die Befehlszeile eingeben , ohne den vollständigen Pfad wie eingeben zu müssen"C:\myprog\bin\myprog.exe" --help
. Die Verwendung der Befehlszeile ist natürlich nur ein Beispiel. Sie ermöglicht jedem Programm oder jeder Schnittstelle den Zugriff auf jede Art von Datei, ohne den vollständigen Pfad zu benötigen.quelle
%USERPROFILE%\AppData\Local\Temp
eines meiner Probleme zu beheben, führte jedoch zu vielen weiteren Problemen. Ich habe es wieder in geändertC:\Windows\Temp
. Wenn es eine Benutzerversion gibt, kann das System verwendenC:\Windows\Temp
, während ich verwenden kann%USERPROFILE%\AppData\Local\Temp
und jeder glücklich ist. Ich werde es versuchen. Vielen Dank!Sie benötigen beides, da unterschiedliche Programme unterschiedliche Programme verwenden.
Sie müssen nicht an die gleiche Stelle gesetzt werden, da nur sehr schlecht geschriebene Programme beide verwenden, sofern sie auf dasselbe verweisen.
/ tmp ist ein allgemeines Verzeichnis für temporäre Dateien in Unix, das auch die Umgebungsvariable TMPDIR verwendet
Aus dem Speicher (als ich dies Mitte der 80er Jahre benutzte) TEMP war das Original, das in DOS und TMP verwendet wurde, und wurde tendenziell von Programmen verwendet, die von Unix portiert wurden, um mit / tmp übereinzustimmen. Als jedoch Programme in DOS geschrieben wurden, da es keine Steuerung gab, verwendeten verschiedene Entwickler unterschiedliche. In modernen Windows ist die Microsoft-Standardeinstellung für beide gleich, siehe dieses Dokument
quelle
TMPDIR
. Der Standard erwähnt keines von beidenTMP
oderTEMP
beide, die ihren Ursprung in der DOS-Welt haben.