Все команды, которые пользователь может захотеть выполнить, находятся в PATH. Вот для чего это. Это включает в себя команды, которые вы запускаете напрямую, команды, которые запускают другие люди напрямую, и команды, которые вы или другие люди запускаете косвенно, потому что они вызываются другими командами. Это не ограничивается командами, запускаемыми из терминала: команды, запускаемые из графического интерфейса, также ищутся в пути поиска команд (опять же, для этого он и нужен).
Потребность набрать полный путь была бы ужасна: вам нужно выяснить, что такое полный путь! Вам нужно будет отслеживать, находится ли он /usr/bin
(который содержит большинство программ, поставляемых с операционной системой), или внутри /usr/local/bin
(который содержит программы, установленные вручную администратором, а также программы, которые не являются частью основной ОС на некоторых варианты unix), или в каком-то другом системном каталоге, или где-нибудь в домашнем каталоге пользователя.
Трудно ответить о «влиянии на производительность или ремонтопригодность», потому что вы не говорите, с чем сравниваете. Если вы сравниваете с необходимостью везде вводить полный путь, это кошмар для удобства сопровождения: если вы когда-либо перемещаете программу или хотите установить более новую версию, чем та, которая шла с ОС или была установлена системным администратором, Вы должны заменить этот полный путь везде. Влияние на производительность поиска имени в нескольких каталогах незначительно.
Если вы сравниваете с Windows, это еще хуже: некоторые программы добавляют в PATH не только исполняемый файл, но и все виды дерьма, и вы получаете PATH
переменную длиной в милю, которая все еще не включает все программы, потому что многие программы не добавляют себя в системный PATH при их установке.
Переменная PATH содержит список путей к каталогам. Когда пользователь вводит команду без указания полного пути, этот список проверяется, содержит ли он путь, ведущий к команде. В этом нет ничего конкретного терминала или командной строки.
Более того, в этом нет ничего специфичного для Desktop Linux. PATH из моей системы XP содержит % SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem, который, вероятно, охватывает большинство двоичных файлов Windows.
Каталоги в PATH ищутся в указанном порядке и останавливаются, как только найдено совпадение. Системные каталоги обычно находятся в начале, чтобы дать им наивысший приоритет. Пользователи должны добавлять пользовательские пути поиска в конце.
Что касается производительности: большинство современных оболочек кэшируют содержимое PATH, поэтому им не нужно сканировать диск каждый раз, когда пользователь вводит команду.
источник
usr
,local
,bin
иsbin
( за исключение моего домашнего каталога пользователя).