TEMP vs TMP in Umgebungsvariablen

20

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?

Screenshot von Umgebungsvariablen

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

Celeritas
quelle
Wo ist die
Pfadvariable
@Mark was macht das schon?
Celeritas
@ David Marshall was macht das schon?
Celeritas
Meine Frage ist nicht, wie man die Pfadvariable ändert. Und wenn es die Antworten Ihrer Jungs wären, dann wären sie falsch, denn ich gehe davon aus, dass beim Ändern einer Variablen TEMP, TMP oder beides verwendet werden sollte. Und Sie geben nicht an.
Celeritas
3
Lesen Sie den folgenden Artikel Warum gibt es sowohl TMP- als auch TEMP-Umgebungsvariablen und welche sind richtig? Demnach TMPkönnte diejenige sein, die (aufgrund der GetTempFileNameFunktion) zu bevorzugen ...
aschipfl

Antworten:

10

Um die Frage konkret zu beantworten:

Was ist der Unterschied zwischen den beiden?

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 auf C:\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 Sie echo %TMP%oder ein echo %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 tun echo %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 einfach myprogoder myprog --helpetc 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.

RyanayR
quelle
Sie sind unterschiedlich, einige Programme verwenden eine und einige die andere, so dass Sie beide benötigen
user151019
Interessant. Ich kann keine Verzeichnisse komprimieren, da mir manchmal der Zugriff verweigert wurde. Das Ändern von TEMP und TMP, um %USERPROFILE%\AppData\Local\Tempeines meiner Probleme zu beheben, führte jedoch zu vielen weiteren Problemen. Ich habe es wieder in geändert C:\Windows\Temp. Wenn es eine Benutzerversion gibt, kann das System verwenden C:\Windows\Temp, während ich verwenden kann %USERPROFILE%\AppData\Local\Tempund jeder glücklich ist. Ich werde es versuchen. Vielen Dank!
Inf3rno
3

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

user151019
quelle
2
Tatsächlich ist die Standard-SUS-Variable TMPDIR. Der Standard erwähnt keines von beiden TMPoder TEMPbeide, die ihren Ursprung in der DOS-Welt haben.
JdeBP
@ J, SUS ist ????
Pacerier
1
Etwas spät aber: Single UNIX Specification.
Tim Diggins