что такое path в linux

Переменная окружения PATH

Переменная окружения PATH, что это такое? Многие команды, которые вы вводите в командной строке, требуют применения внешней программы, загружаемой из файловой системы. Например, такие команды как mkdir и wc на самом деле находятся в папке /bin.

Кстати, нет ничего обиднее, чем пЕрЕплАтИть при покупке 🤦🏻‍♂️ Поэтому ОЧЕНЬ рекомендую подписаться на канал в Телеграм 👉🏻 Промокоды для Алиэкспресс 👈🏻 Постоянно узнавая про новые акции 🔥 на разные товары, вы точно НИКОДА не переплатите 👌🏻

Когда вы вводите инструкцию, которую оболочка Bash не распознает, она пытается выполнить ее как программу и возвращает ошибку, если не находит программу с таким именем. И это относится не только к основным командам, которые мы рассматривали, потому что из командной строки вы можете запустить любую программу.

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

При каждом вводе неизвестной команды Linux будет просматривать каждую из папок, указанных в переменной окружения, в порядке их задания, пытаясь найти программу с тем же именем. Если программа найдена, она запускается; в противном случае выводится сообщение об ошибке. Но не будет ошибкой, если вы купите своё любимой серебряные кольца в подарок. Серебро украсит любую женщину!

Эти семь папок обеспечивают легкий доступ ко всем основным программам в операционной системе, включая игры. Любые программы за пределами этих семи папок не могут быть запущены простым вводом их имени в командной строке.

Например, вы загрузили из Интернета в вашу домашнюю папку утилиту diary. Если вы введете ее имя в командной строке, то получите сообщение об ошибке, потому что она находится в папке, не включенной в системный путь. Для выполнения этой программы следует ввести следующую строку (напоминаю, что символ

— сокращенное обозначение вашей домашней папки):

Если вы сохранили ее в папке за пределами вашего заданного пути, вам придется для запуска утилиты ввести абсолютный путь и имя файла.

Конечно предполагается, что diary — простая автономная программа, не требующая установки, потому что большинство основных приложений в процессе установки поместят исполняемый файл программы куда-нибудь в ваш заданный путь. Вот такая переменная окружения PATH, пользуйтесь на здоровье!

Лично я часто покупаю на Aliexpress и стараюсь это делать, когда скидки на МАКСИМУМ 🔥 Поэтому ОЧЕНЬ советую ВАМ Телеграм канал 👉🏻 Распродажи на Алиэкспресс 👈🏻

Источник

Когда в консоли Debian мы вводим какую-то команду или функцию, откуда он знает, где она лежит, как находит и запускает её или не находит и выдаёт ошибку? Объясняется это тем, что есть переменная, в которой хранятся пути до папок, в которых происходит поиск введённой команды (функции или скрипта). И если *nix находит соответствие заданному запросу, то запускает эту команду на исполнение (с дополнительными параметрами, если они введены) или выдаёт ошибку: «Пичалька, всё обыскал, но не понимаю, о чём ты спрашиваешь и чего хочешь.»

Для того, чтобы увидеть, какие папки при поиске заданной команды Линукс обходит в её поиске, достаточно вывести её значение с помощью команды echo :

В результате получим список директорий (папок), в которых предположительно могут находиться запрашиваемые команды или программы, например:

Таким образом, можно понять, в каких папках Unix поискал (и не нашёл) нужной команды или программы, при неудачном стечении обстоятельств и тихо ругнулся:

Однако, если данная команда и/или программа существует и вы точно знаете, где она лежит, можно прописать до неё путь (относительный или абсолютный) и тогда она отработает свой сценарий:

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

Так, например, bash-скрипты начинаются строчкой:

А скрипты на языке программирования Perl, такой:

Резюме

Таким образом становится предварительно понятно, как происходит эта магия того, что компьютер может отвечать на какие-то запросы, выполняя требуемые действия при вводе определённых команд. ;)

Источник

PATH HOWTO

Данный документ переведен в рамках проекта Russian Linux Documentation Project

v0.4, 15 November 1997

1. Введение

Этот документ описывает основные тонкости и проблемы, при работе с переменными окружения Unix/Linux, в особенности с переменной PATH (путь). PATH это список директорий, где производится поиск исполняемых программ. Детали относятся к Debian Linux 1.3.

2. О Russian Linux Documentation Project

В переводе данного HOWTO участвовали:

Автор английской версии Esa Turtiainen etu@dna.fi

3. Условия распространения

Этот документ представляет собой свободную документацию; вы можете распространять и/или модифицировать его на условиях GNU General Public License, опубликованной Free Software Foundation; как версии 2, так и (на ваше усмотрение) любой более поздней версии.

Данная документация распространяется в надежде, что она будет полезна, но без КАКИХ ЛИБО ГАРАНТИЙ; даже без подразумеваемой гарантии КОММЕРЧЕСКОЙ ЦЕННОСТИ или гарантии ПРИГОДНОСТИ В КОНКРЕТНЫХ СЛУЧАЯХ. Детали смотри в Gnu General Public License.

Вы должны были получить копию GNU General Public License вместе с этой документацией; если нет, пишите Free Software Foundation,Inc., 675 Mass Ave, Cambridge,MA 02139,USA.

4. Общие принципы

В данном howto, я использую термин ‘команда’, чтобы обозначить исполняемую программу, которая запускается на исполнение с помощью короткого имени, используя механизм path.

В Линукс, даже низкоуровневые вызовы операционной системы для запуска процессов (семейство вызовов exec) просматривают директории указанные в переменной PATH: вы можете использовать механизм path везде, где вы пытаетесь исполнить команду. Даже если переменная PATH не установлена в окружении, по крайней мере директории /bin и /usr/bin, просматриваются в поисках подходящих команд.

В sh вы можете использовать команду export, чтобы установить окружение, в csh вы можете использовать команду setenv. Например:

Команда env это простейший путь запросить текущие переменные окружения. Её можно также использовать для их модификации.

Более подробную информацию о механизме работы окружения, можно найти в страницах руководства ‘environ’, ‘execl’, ‘setenv’, и info файле ‘env’, а также в документации на различные командные интерпретаторы.

Система обычно содержит множество постоянно запущенных процессов (демонов), которые могут использовать или не использовать окружение по умолчанию. Большинство серверов запускаются из инициализационных скриптов и поэтому имеют окружение init.

5. Init

Init это родительский процесс для всех процессов в системе. Другие процессы наследуют окружение init и переменная path будет соответствовать переменной path для init, в том редком случае, когда она не была модифицирована.

Содержимое ‘init path’ прописано в исходном коде программы init:

Заметьте, что путь init, не включает /usr/local/bin.

Все программы, запущенные из /etc/inittab, работают в окружении init, особенно системные скрипты инициализации в /etc/init.d/ (Debian 1.3).

Все, что запущено из скриптов инициализации системы, по умолчанию имеет окружение init. Например: syslog,kerneld,pppd (если он запускается при загрузке), gpm и, что более важно, lpd и inetd, наследуют окружение init и не изменяют его.

Группа программ запускается при помощи скриптов запуска, но переменная PATH явно устанавливается в скрипте запуска. Например: atd,sendmail,apache и squid.

Есть также другие программы, стартующие из загрузочных скриптов, но они полностью изменяют свою переменную path. Одна из таких программ cron.

6. Вход в систему

В текстовой консоли, программа getty ждет входа пользователя в систему. Она выводит на консоль ‘login:’ и другие сообщения. Она работает с окружением init. Когда getty пропускает пользователя в систему, она запускает программу ‘login’, которая устанавливает пользовательское окружение и запускает shell.

Программа login устанавливает путь, как описано в /usr/include/paths.h. Причем его значение различно для root и обыкновенных пользователей.

Переменная path обычных пользователей не содержит директорий sbin. В тоже время она содержит текущую директорию, ‘.’, что считается опасным для пользователя root. Также path для root не содержит /usr/local/bin.

Значение path установленное login, часто переписывается при инициализации shell. В тоже время возможно указывать другие программы в /etc/passwd в качестве командных интерпретаторов пользователя. Например, я использовал следующую строку, чтобы запускать PPP, когда я вхожу под определенным именем пользователя. В данном случае, pppd наследует путь login.

7. Командные интерпретаторы

Часто пользовательские процессы являются дочерними процессами командного интерпретатора, указанного в /etc/passwd для данного пользователя. Файлы инициализации командных интерпретаторов обычно модифицируют этот путь.

7.1. bash

Если bash используется с именем sh, вместо bash, он эмулирует инициализацию оригинального Bourne shell интерпретатора: исполняет только файлы /etc/profile и ˜/.profile и только для ‘login’ интерпретаторов.

7.2. tcsh

В качестве login интерпретатора tcsh исполняет следующие файлы в указанном порядке:

Источник

PATH HOWTO

Esa Turtiainen

Перевод: Александр Ермолаев, SWSoft Pte Ltd.

Версия 0.4, 15 Ноября 1997

1. Введение

Этот документ описывает общие проблемы с переменными окружения Unix / Linux, особенно с переменной PATH. Переменная PATH содержит список каталогов, в которых производится поиск команд. Применимо для дистрибутива Debian Linux 1.3.

Примечание! Этот документ находится в стадии разработки. Пожалуйста, посылайте комментарии и исправления.

2. Copyright

This documentation is free documentation; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this documentation; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

3. Авторские права

Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе, физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но, так или иначе, автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO, должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO, с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу

4. Общие принципы

В этом документе я использую термин ‘команда’, к которому отношу программы, которые, как предполагается, имеют короткое имя, используя механизм путей.

В Linux для запуска процесса операционная система просматривает каталоги, записанные в переменной PATH: вы можете использовать механизм путей там, где пробуете выполнить команду. Если операционная система получает имя файла, котрый не содержит ‘/’ то просматриваются каталоги из переменной окружения PATH. Даже если в среде не имеется никакой переменной PATH, по крайней мере, каталоги /bin и /usr/bin будут просматриваться.

В sh вы используете команду export, чтобы установить окружение, в csh используйте команду setenv. Например:

Более исчерпывающую информацию по основам механизма окружения можно взять из страниц руководства (man) ‘environ’, ‘execl’, ‘setenv’, или info ‘env’ и из документации по вашей оболочке.

Система содержит много запускаемых серверов (демоны), которые могут использовать или не использовать окружение, установленное по умолчанию. Большинство серверов запускается из сценария инициализации, и, таким образом, имеют окружение от init.

Когда пользователь заходит в систему, на среду действуют назначения, которые записаны в программу при компиляции, в системный скрипт инициализации и в пользовательский скрипт инициализации. Это довольно усложнено, и текущая ситуация не полностью удовлетворительна. Процесс различается, если пользователь заходит из консоли, XDM или из сети.

5. Процесс Init

‘Пути init’ зафиксированы в исходниках программы и они выглядят так:

Заметьте, что пути init не содержат /usr/local/bin.

Все программы, которые запускаются из /etc/inittab работают в окружении init, особенно системные скрипты инициализации из /etc/init.d (Debian 1.3).

Все, что запускается из системных сценариев инициализации, имеет окружение init, как окружение по умолчанию. Например, syslogd, kerneld, pppd (когда стартует при запуске), gpm, lpd и inetd имеют окружение init, и не изменяют его.

Группа программ стартует из загрузочного скрипта, и PATH явно установлена в этом скрипте. Например: atd, sendmail, apache и squid.

6. Процесс Login

В текстовой консоли имеется программа getty, ожидающая вход в систему пользователя. Она пишет ‘login:’ и другие сообщения. Работает в окружении init. Когда пользователь входит в систему, getty вызывает программу ‘login’. Эта программа устанавливает пользовательское окружение и вызывает оболочку.

Программа Login устанавливает пути, определенные в /usr/include/paths.h. ‘Пути login’ различны для root и других пользователей.

Пути обычных пользователей не содержат пути, содержащие любые sbin каталоги. Однако, они содержат текущий каталог, ‘.’, который считается опасным для пользователя root. Даже /usr/local/bin не указан для root.

Пути Login часто переписываются скриптом инициализации оболочки. Однако, возможно использовать другие программы, записанные в /etc/passwd как оболочки пользователя. Например, я использовал следующую строку, чтобы запускался PPP, когда я вхожу в систему, используя специальное имя пользователя. В этом случае, pppd имеет точный путь входа в систему.

7. Оболочки

7.1. bash

Как нормальная оболочка, bash просматривает общесистемный файл /etc/profile, где описано системное окружение и пути, которые могут быть установлены для пользователей bash. Однако, это не выполняется, когда система интерпретирует оболочку как не-интерактивную. Наиболее важный случай находится в rsh, когда удаленная команда выполняется на соседней машине. /etc/profile не запускается, и пути наследуются от rsh демона.

Пользователь может переписать значения, установленные в /etc/profile путем создания файлов

Если bash используется с именем sh вместо имени bash, он эмулирует инициализацию bash: ищет файлы /etc/profile и

/.profile только для входных оболочек.

7.2. tcsh

При входе оболочка tcsh исполняет следующие файлы в данной последовательности:

Источник

Ищем путь до линукс команд, как профессионалы

Один из самых распространённых вопросов от подписчиков — как получить путь к команде Linux, которую только что установили в систему с помощью пакетного менеджера, например, команды apt или DNF. Много новых разработчиков переходит к нам из мира Windows, и для многих это первый опыт использования Linux. Некоторые используют WSL (подсистему Linux в Windows 10), а остальные работают с облачными серверами напрямую по SSH. Рассмотрим ряд распространённых команд, с помощью которых можно отобразить список команд Linux или получить к ним путь.

▍ Что такое команда Linux?

Пользовательский интерфейс Windows по умолчанию графический. Однако у ОС Linux на стороне сервера по умолчанию текстовый интерфейс. Поэтому часто используются такие термины как Bash, оболочка пользователя, консоль, приглашение командной строки, терминал и так далее. Все они относятся к текстовому интерфейсу.


date, pwd, hello и ping — это команды Linux.

▍ Различные типы команд Linux

Команды Linux, которые вводят в терминал, бывают разных типов:

▍ Как определить тип команды Linux

Например, давайте выясним тип команды pwd:

В Linux и Unix-подобных системах переменная PATH содержит перечень путей, по которым хранятся исполняемые программы, например ping, date, vi, docker и так далее. Чтобы просмотреть текущую переменную path, воспользуйтесь командой echo /printf:

Вот что отображается у меня:

▍ Как отобразить информацию о командах

Чтобы получить путь к команде Linux, введите command следующим образом:

▍ Как найти команду Linux

▍ Получаем путь к команде или man-странице Linux

Чтобы найти двоичный файл, исходный код и man-страницу какой-либо программы или команды на диске, используйте команду whereis в следующем синтаксисе:

Надо, чтобы отображались только двоичные файлы? Есть вот такой вариант:

Ищете только руководства и справочные страницы? Проще простого:

▍ Команды find и locate

Файлы можно также искать по имени файла. К примеру, так будет выглядеть поиск файла, в имени которого содержится слово ‘date’:

Результаты выполнения команды locate:

▍ Вывод справки о командах Linux

Команда whatis :
К каждой команде Linux прилагается man-страница (руководство, описывающее способ применения и синтаксис команды). Кроме того, справка содержит краткое описание команды. Для поиска по названиям man-страниц используется команда whatis. Она отображает описания команд для любых названий, введенных в краткой форме:

Для ключевых слов и встроенных команд Bash используется команда help:

▍ В качестве заключения

Основная проблема, с которой сталкиваются новоиспечённые пользователи Linux — поиск команд. Но благодаря этому доступному руководству вы теперь умеете получать путь к нужным командам и даже выводить справку о них в формате man-страниц. Предположим, вы установили Docker на сервер Ubuntu. Получить путь к этой системе и изучить руководство можно с помощью следующих команд:

Если вы работаете с сервером Debian или Ubuntu Linux, вам пригодятся следующие две команды. Отобразить список всех файлов, установленных на сервер пакетом Docker, можно командой dpkg :

Вывести на экран информацию о пакете Docker можно с помощью команды apt :

Надеюсь, новым пользователям и разработчикам Linux эти команды окажутся полезны.

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • что такое passenger linux
  • что такое panther в папке windows
  • Что такое pakchunk0 windowsnoeditor pak
  • что такое paint 3d в windows 10
  • что такое paint 3d в windows 10 и для чего он нужен

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии