16

Правильно ли иметь эти две переменные окружения 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

2 ответа2

8

Чтобы ответить на вопрос конкретно:

Какая разница между двумя?

Нет никакой разницы. Это просто разные псевдонимы для одного и того же пути. Как отметил Марк, некоторые программы используют %TMP% то время как другие используют %TEMP% . По умолчанию Windows назначает оба пути одинаковым для обеспечения согласованности между различными программами и даже для защиты от ошибок разработчика, таких как использование обоих в одной программе.

Также обратите внимание, что переменная %Path% не имеет ничего общего ни с %TMP% ни с %TEMP% . %Path% является системной переменной, в то время как %TMP% и %TEMP% являются как системными, так и пользовательскими переменными. Версии системы ссылаются на C:\windows\TEMP . AFAIK, только пользователь "System" может фактически использовать эти переменные, о чем свидетельствует простой тест; откройте окно cmd и введите echo %TMP% или echo %TEMP% , и он вернет путь, определенный в пользовательской версии переменных. Однако, поскольку %Path% не имеет пользовательской версии (по умолчанию), вы можете выполнить echo %Path% и он вернет значение системной переменной.

Я не совсем уверен, как программы используют системную переменную "Path", которая, вероятно, имела в виду cygwin, но, независимо от этого, могу заверить вас, что это не имеет никакого отношения к TMP или TEMP.

Надеюсь это ответит на твой вопрос.

РЕДАКТИРОВАТЬ: Я только что вспомнил, для чего %Path% - он позволяет вам получить доступ к любым файлам, которые находятся по любому из путей, указанных в переменной, без необходимости использовать полный путь к файлу. Например, добавление «C:\myprog\bin» в% Path% позволит вам просто ввести myprog или myprog --help т.д. В командную строку, не вводя полный путь, например "C:\myprog\bin\myprog.exe" --help . Конечно, использование командной строки является лишь примером, оно позволяет любой программе или интерфейсу получить доступ к любому типу файла без полного пути.

2

Вам нужны оба, так как разные программы используют разные.

Их не нужно устанавливать в одно и то же место, поскольку только очень плохо написанные программы будут использовать обе, предполагая, что они указывают на одно и то же.

/tmp - это общий каталог для временных файлов в Unix, также использующий переменную окружения TMPDIR

По памяти (когда я использовал это в середине 80-х), TEMP был оригинальным, используемым в DOS, а TMP, как правило, использовался программами, перенесенными из Unix для соответствия /tmp. Однако, когда программы были написаны в DOS, поскольку не было никакого контроля, разные разработчики использовали разные. В современных Windows по умолчанию Microsoft одинакова для обоих см. Этот документ

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .