Правильно ли иметь эти две переменные среды 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
источник
TMP
может быть, тот, кто предпочтет (из-заGetTempFileName
функции) ...Ответы:
Чтобы ответить на вопрос конкретно:
Нет никакой разницы. Это просто разные псевдонимы для одного и того же пути. Как отметил Марк, некоторые программы используют, в
%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
. Конечно, использование командной строки - только пример, оно позволяет любой программе или интерфейсу обращаться к любому виду файлов без полного пути.источник
%USERPROFILE%\AppData\Local\Temp
исправить одну из моих проблем, но породило еще много. Я изменил это обратноC:\Windows\Temp
. Если есть пользовательская версия, то система может использоватьC:\Windows\Temp
, а я могу использовать,%USERPROFILE%\AppData\Local\Temp
и все счастливы. Я попробую. Благодарность!Вам нужны оба, так как разные программы используют разные.
Их не нужно устанавливать в одно и то же место, так как только очень плохо написанные программы будут использовать обе, предполагая, что они указывают на одно и то же.
/ tmp - это общий каталог для временных файлов в Unix, также использующий переменную окружения TMPDIR
По памяти (когда я использовал это в середине 80-х), TEMP был оригинальным, используемым в DOS, а TMP, как правило, использовался программами, перенесенными из Unix для соответствия / tmp. Однако, когда программы были написаны в DOS, поскольку не было никакого контроля, разные разработчики использовали разные. В современных Windows по умолчанию Microsoft одинакова для обоих см. Этот документ
источник
TMPDIR
. Стандарт не имеет никакого упоминания ниTMP
илиTEMP
, оба из которых произошли в мире DOS.