TEMP против 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


Где переменная Path в
временном файле?

@ Марк, какое это имеет значение?
Celeritas

@DavidMarshall какое это имеет значение?
Celeritas

Мой вопрос не в том, как изменить переменную пути. И если бы это были ваши парни, ответы были бы неправильными, потому что моя точка зрения заключается в том, что при изменении любой переменной это должно быть сделано для TEMP, TMP или обоих. И вы не указываете.
Celeritas

3
Ознакомьтесь с этой статьей. Почему существуют переменные окружения TMP и TEMP, и какая из них правильная? В соответствии с этим, TMPможет быть, тот, кто предпочтет (из-за GetTempFileNameфункции) ...
aschipfl

Ответы:


10

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

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

Нет никакой разницы. Это просто разные псевдонимы для одного и того же пути. Как отметил Марк, некоторые программы используют, в %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. Конечно, использование командной строки - только пример, оно позволяет любой программе или интерфейсу обращаться к любому виду файлов без полного пути.


Они разные, некоторые программы используют одну, а другую другую, поэтому вам нужны оба
user151019

Интересный. Я не могу сжать каталоги, потому что мне иногда отказывают в доступе. Изменение 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. Стандарт не имеет никакого упоминания ни TMPили TEMP, оба из которых произошли в мире DOS.
JdeBP

@J, SUS это ????
Pacerier

1
Немного поздно, но: единая спецификация UNIX.
Тим Диггинс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.