Почему, когда я устанавливаю Composer в Windows 7/8/10 или в некоторых программах под UNIX, таких как GNU Tar, мне нужно установить их значение Path, а если нет, они не будут использоваться другими программами?
3 ответа
Я ответил на это для Microsoft Windows. Я вижу, что здесь также есть тег Linux. Ну, применяются те же понятия. (Дальнейшие замечания по Linux упоминаются в последнем абзаце.)
Вы можете использовать программы, если они не находятся в каталоге, указанном переменной среды PATH. Однако это немного менее удобно.
Например, я часто запускаю 7-Zip, хотя его нет в пути. Таким образом, вместо запуска командной строки с "7z", я запускаю командную строку с:
"C:\Program Files\7-Zip\7z.exe"
Это не так плохо, как кажется, потому что то, что я на самом деле печатаю, обычно выглядит примерно так:
C:\ tab Pro tab 7 tab 7 tab
(Я прислушиваюсь к звуковым сигналам, которые могут произойти, если есть опечатки, и после моего последнего расширения с помощью клавиши табуляции я также проверяю точность командной строки, чтобы убедиться, что она работает так, как я хотел.)
Программа может проверить, как вы ссылались на программу в командной строке, и может проверить ваш текущий каталог. Таким образом, программа может действовать по-разному в зависимости от того, находится ли она в переменной PATH. Однако это маловероятно.
Альтернативные решения: Настройте переменную среды PATH, чтобы она также включала каталог, в котором установлена программа.
Другое альтернативное решение: просто поместите исполняемый файл в каталог, который уже находится в PATH. (Однако некоторые программы являются более сложными, поскольку им также могут потребоваться другие файлы, такие как DLL-файлы, скопированные в такой каталог; поэтому такой подход обычно не рекомендуется для программ, которые необходимо "установить", выполнив "установку" программа». Тем не менее, для простых исполняемых файлов, которые можно просто запустить, не нуждаясь в куче вспомогательных файлов, это часто жизнеспособно.)
В Linux есть некоторые незначительные отличия: вы бы просто использовали « echo ${PATH}
» вместо « echo %PATH%
», использовали прямые косые черты вместо обратных, а 7za
для 7-Zip вместо 7z.exe
. Если вы хотите изменить путь, вы можете использовать другую команду, например, export
, но в действительности зависит от того, какую оболочку вы используете.)
Почему некоторые программы нуждаются в значении Path, а другие - в Windows?
Почему, когда я устанавливаю Composer в Windows 7/8/10 или в некоторых программах под UNIX, таких как GNU Tar, мне нужно установить их значение Path, а если нет, его не смогут использовать другие программы?
PATH - это переменная среды в Unix-подобных операционных системах, DOS, OS/2 и Microsoft Windows, указывающая набор каталогов, в которых находятся исполняемые программы. В общем, каждый выполняющийся процесс или пользовательский сеанс имеет свою собственную настройку PATH.
DOS, OS/2 и Windows
Некоторые программы могут добавлять свой каталог в начало содержимого переменной PATH во время установки, чтобы ускорить процесс поиска и / или переопределить команды ОС. В эпоху DOS обычно добавляли строку PATH {program directory};%PATH%
SET PATH={program directory};%PATH%
или AUTOEXEC.BAT
.
Когда команда вводится в командной оболочке или системный вызов выполняется программой для выполнения программы, система сначала ищет текущий рабочий каталог, а затем ищет путь, просматривая каждый каталог слева направо, ища исполняемое имя файла соответствует имени команды Исполняемые программы имеют расширения файлов EXE
или COM
, а пакетные сценарии имеют расширения BAT
или CMD
. Другие исполняемые расширения файлов также могут быть зарегистрированы в системе.
Unix и Unix-подобные
Когда имя команды задается пользователем или из программы выполняется вызов exec, система просматривает $PATH
, просматривая каждый каталог слева направо в списке и ищет имя файла, соответствующее имени команды. После обнаружения программа выполняется как дочерний процесс командной оболочки или программы, которая выдала команду.
Источник: PATH_(переменная)
В Windows приложение может зарегистрировать свой путь в реестре {HKCU|HKLM}\Software\Microsoft\Windows\CurrentVersion\App Paths
. Затем Windows запомнит, где найти соответствующий файл .exe, не увеличивая значение переменной среды PATH
.
Приложение, установленное для каждого пользователя, может быть зарегистрировано в HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths. Приложение, которое установлено для всех пользователей компьютера, может быть зарегистрировано в HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths.
Записи, найденные в разделе «Пути к приложениям», используются главным образом для следующих целей:
- Чтобы сопоставить имя исполняемого файла приложения с полным путем этого файла.
- Предварительное ожидание информации в переменной среды PATH для каждого приложения и для каждого процесса.
Например, установка Windows по умолчанию имеет запись реестра:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WORDPAD.EXE
(Default)="%ProgramFiles%\Windows NT\Accessories\WORDPAD.EXE"
Это позволяет запускать WordPad из меню «Пуск / Выполнение» путем ввода просто wordpad
(или start wordpad
в командной строке cmd), даже если %ProgramFiles%\Windows NT\Accessories
отсутствует в переменной PATH.