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

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

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

  • Обои для рабочего стола в XFCE4
  • Абсолютный путь к исполняемой программе
  • Разрешение местоположения / регистрации исполняемого файла в системе?
  • Последствия наличия переменной переменной $ PATH?
  • Должен ли я использовать символические ссылки в / usr / bin или вместо этого использовать переменную PATH?
  • Как найти / исправить ошибку в пути
  • Доступ к исполняемым файлам PgSQL из любого места
  • Bash: путь или ссылка на строку в файле?
  • 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, поэтому им не нужно сканировать диск каждый раз, когда пользователи вводят команду.

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