чтобы ответить на вопрос конкретно:
в чем разница между ними?
нет никакой разницы. Это просто разные псевдонимы для одного и того же пути. Как упоминал Марк, некоторые программы используют %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%
is for - это позволяет получить доступ к любым файлам, которые находятся в любом из путей, указанных в переменной без нужно использовать полный путь к файлу. Например, добавление "C:\myprog\bin" to %Path% позволит вам просто набрать myprog
или myprog --help
etc в командной строке без необходимости вводить полный путь, как "C:\myprog\bin\myprog.exe" --help
. Конечно, использование командной строки - это только пример, он позволяет любой программе или интерфейсу получить доступ к любому файлу без необходимости полного пути.