环境变量中的TEMP vs TMP


20

这两个环境变量TEMP和TMP是否正确?如果我对一个进行更改,是否应该对另一个进行相同的更改?例如,我正在安装cygwin,并且说明告诉我更改PATH变量,但是TEMP和TMP都具有path变量。两者有什么区别?

环境变量的屏幕截图

不知道为什么人们希望看到它,但这是路径的值: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


临时变量的路径在哪里,我在屏幕快照
中看

@Mark有什么关系?
Celeritas

@DavidMarshall有什么关系?
Celeritas 2014年

我的问题不是如何更改路径变量。如果是你们的话,答案将是错误的,因为我的观点是,更改任何变量时都应将其更改为TEMP,TMP或两者都做。而且您没有指定。
Celeritas 2014年

3
查阅本文,为什么同时存在TMP和TEMP环境变量,哪个正确?据此,TMP可能是首选的(由于GetTempFileName功能)...
aschipfl 2013年

Answers:


10

具体回答问题:

两者有什么区别?

没有区别。它们只是同一路径的不同别名。如Mark所述,某些程序使用,%TMP%而另一些使用%TEMP%。Windows默认情况下将两者分配给同一路径,以确保不同程序之间的一致性,甚至防止开发人员错误,例如在同一程序中使用两者。

另请注意,该%Path%变量与%TMP%或都不相关%TEMP%%Path%是一个系统变量,而%TMP%%TEMP%都是系统变量和用户变量。系统版本链接到C:\windows\TEMP。AFAIK,只有“系统”用户才能实际使用这些变量,这通过简单的测试即可证明;打开cmd窗口并输入echo %TMP%echo %TEMP%,它返回变量的用户版本中定义的路径。但是,由于%Path%没有用户版本(默认情况下),因此您可以执行操作,echo %Path%并且它返回系统变量的值。

我不完全确定程序如何使用“ Path”系统变量,这可能是cygwin所指的,但是无论如何,我可以向您保证,它与TMP或TEMP无关。

希望这能回答你的问题。

编辑:我只记得这%Path%是什么意思-它使您可以访问变量中指定的任何路径中的任何文件,而无需使用文件的完整路径。例如,将“ C:\ myprog \ bin”添加到%Path%将使您只需在命令行中键入myprogmyprog --helpetc,而不必键入完整路径,例如"C:\myprog\bin\myprog.exe" --help。当然,命令行用法只是一个例子,它允许任何程序或界面访问任何类型的文件,而无需完整路径。


它们是不同的,有些程序使用一个而另一个使用,所以您确实需要两者都使用
user151019 2014年

有趣。我无法压缩目录,因为有时访问被拒绝。更改TEMP和TMP以%USERPROFILE%\AppData\Local\Temp解决我的问题之一,但产生了更多问题。我将其更改回C:\Windows\Temp。如果有用户版本,则系统可以使用C:\Windows\Temp,而我可以使用,%USERPROFILE%\AppData\Local\Temp并且每个人都很高兴。我会尝试的。谢谢!
inf3rno

3

您确实需要两者,因为不同的程序使用不同的程序。

无需将它们设置在同一位置,因为只有非常糟糕的程序会在假定它们指向同一事物的情况下使用这两种方法。

/ tmp是Unix中临时文件的通用目录,也使用环境变量TMPDIR

从内存上(当我在80年代中期使用它时),TEMP是DOS和TMP中使用的原始版本,它倾向于被从Unix移植以匹配/ tmp的程序使用。但是,由于无法控制在DOS中编写程序,因此不同的开发人员将使用不同的程序。在现代Windows中,Microsoft的默认设置都相同,请参阅此文档


2
实际上,标准SUS变量是TMPDIR。该标准没有提到TMPTEMP,两者都起源于DOS世界。
JdeBP 2014年

@ J,SUS是????
佩里耶

1
现在有点晚,但是:单一UNIX规范。
蒂姆·迪金斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.