Почему так много программ живут в PATH?

Одна вещь, которая меня озадачивает настольный Linux, по крайней мере, заключается в том, что почти все в моем PATH. Во всем, я имею в виду каждое настольное приложение, включая такие вещи, как gnome-character-map и glchess. У них нет интерфейсов командной строки, поэтому я не могу придумать случай, когда я буду регулярно запускать их с терминала – и, в этом маловероятном случае, я не могу представить, что вам неудобно, нужно набрать их полный пути. Кажется, это беспорядок, но, может быть, есть веская причина.

Итак, почему это происходит? Есть ли заметное влияние на производительность или ремонтопригодность?

2 Solutions collect form web for “Почему так много программ живут в PATH?”

Все команды, которые пользователь может захотеть запустить, находятся в PATH. Вот для чего это. Это включает в себя команды, которые вы запускаете напрямую, команды, которые другие люди запускают напрямую, и команды, которые вы или другие люди запускаете косвенно, потому что они вызывается другими командами. Это не ограничивается командами, выполняемыми с терминала: команды, запускаемые из графического интерфейса, также выполняются в пути поиска команд (опять же, для чего это необходимо).

Нужно набирать полный путь, было бы ужасно: вам нужно выяснить, что такое полный путь! Вам нужно будет отслеживать, находится ли он в /usr/bin (который содержит большинство программ, поставляемых с операционной системой), или в /usr/local/bin (который содержит программы, установленные администратором вручную, а также программы, которые не являются частью основной ОС в некоторых вариантах unix) или в каком-либо другом системном каталоге или где-то в домашнем каталоге пользователя.

Трудно ответить о «влиянии на производительность или ремонтопригодность», потому что вы не говорите, с чем вы сравниваете. Если вы сравниваете с необходимостью вводить полный путь везде, это кошмар для удобства обслуживания: если вы когда-либо перемещаете программу или хотите установить более новую версию, чем то, что было в ОС или было установлено системным администратором, вы должны полностью заменить этот полный путь. Влияние производительности на просмотр имени в нескольких каталогах незначительно.

Если сравнивать с Windows, это еще хуже: некоторые программы добавляют не только исполняемый файл, но и все виды дерьма в PATH, и вы получаете переменную PATH длиной в милю, которая по-прежнему не включает все программы, потому что многие программы не добавляют себя к системе PATH при их установке.

Переменная PATH содержит список путей к каталогам. Когда пользователь вводит команду без предоставления полного пути, этот список проверяется, если он содержит путь, который ведет к команде. В этом нет ничего по своей сути терминальной или командной строки.

Более того, ничего настольного Linux Linux тоже нет. PATH из моей системы XP содержит % SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem, который, вероятно, охватывает большинство двоичных файлов Windows.

Каталоги в PATH выполняются в указанном порядке и останавливаются, как только будет найдено совпадение. Системные каталоги обычно вначале дают им наивысший приоритет. Пользователи должны добавлять пользовательские пути поиска в конце.

Что касается производительности: большинство современных оболочек кэшируют содержимое PATH, поэтому им не нужно сканировать диск каждый раз, когда пользователи вводят команду.

  • Доступ к исполняемым файлам PgSQL из любого места
  • Interesting Posts

    Почему символические ссылки не имеют блоков данных, выделенных им в ext4fs?

    Описание необычного пути

    Определение средних значений, stdev, stderror и counts значений в списке

    Как вы извлекаете целое слово, содержащее подстроку?

    Как вставить результат команды в текст в vim?

    Отображать малину Pi над linux

    Создание виртуального хоста с nginx

    вызов функции Bash из определения псевдонима

    gzip-файлы с кошкой и из трубы дают разные результаты

    Как я могу загружать свой рабочий стол с помощью Wake-on-LAN?

    Как я могу создать резервную копию Win7 перед установкой монетного двора вместе с ним

    Можно ли загружать две библиотеки общих ресурсов приложения во время выполнения?

    Как получить `pdftotext` для вывода текста в читаемом кодировании?

    Как проанализировать файл журнала для строки, и когда найден поиск назад для другой строки

    Почему у дистрибутивов нет уникальной версии, которая постоянно предоставляет обновления?

    Linux и Unix - лучшая ОС в мире.