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