6

Почему, когда я устанавливаю Composer в Windows 7/8/10 или в некоторых программах под UNIX, таких как GNU Tar, мне нужно установить их значение Path, а если нет, они не будут использоваться другими программами?

3 ответа3

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 , но в действительности зависит от того, какую оболочку вы используете.)

2

Почему некоторые программы нуждаются в значении 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_(переменная)

1

В 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .