Путь до утилиты linux

Переменная PATH в Linux

Когда вы запускаете программу из терминала или скрипта, то обычно пишете только имя файла программы. Однако, ОС Linux спроектирована так, что исполняемые и связанные с ними файлы программ распределяются по различным специализированным каталогам. Например, библиотеки устанавливаются в /lib или /usr/lib, конфигурационные файлы в /etc, а исполняемые файлы в /sbin/, /usr/bin или /bin.

Таких местоположений несколько. Откуда операционная система знает где искать требуемую программу или её компонент? Всё просто — для этого используется переменная PATH. Эта переменная позволяет существенно сократить длину набираемых команд в терминале или в скрипте, освобождая от необходимости каждый раз указывать полные пути к требуемым файлам. В этой статье мы разберёмся зачем нужна переменная PATH Linux, а также как добавить к её значению имена своих пользовательских каталогов.

Переменная PATH в Linux

Для того, чтобы посмотреть содержимое переменной PATH в Linux, выполните в терминале команду:

На экране появится перечень папок, разделённых двоеточием. Алгоритм поиска пути к требуемой программе при её запуске довольно прост. Сначала ОС ищет исполняемый файл с заданным именем в текущей папке. Если находит, запускает на выполнение, если нет, проверяет каталоги, перечисленные в переменной PATH, в установленном там порядке. Таким образом, добавив свои папки к содержимому этой переменной, вы добавляете новые места размещения исполняемых и связанных с ними файлов.

Для того, чтобы добавить новый путь к переменной PATH, можно воспользоваться командой export. Например, давайте добавим к значению переменной PATH папку/opt/local/bin. Для того, чтобы не перезаписать имеющееся значение переменной PATH новым, нужно именно добавить (дописать) это новое значение к уже имеющемуся, не забыв о разделителе-двоеточии:

Теперь мы можем убедиться, что в переменной PATH содержится также и имя этой, добавленной нами, папки:

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

В ОС Ubuntu значение переменной PATH содержится в файле /etc/environment, в некоторых других дистрибутивах её также можно найти и в файле /etc/profile. Вы можете открыть файл /etc/environment и вручную дописать туда нужное значение:

sudo vi /etc/environment

Можно поступить и иначе. Содержимое файла .bashrc выполняется при каждом запуске оболочки Bash. Если добавить в конец файла команду export, то для каждой загружаемой оболочки будет автоматически выполняться добавление имени требуемой папки в переменную PATH, но только для текущего пользователя:

Выводы

В этой статье мы рассмотрели вопрос о том, зачем нужна переменная окружения PATH в Linux и как добавлять к её значению новые пути поиска исполняемых и связанных с ними файлов. Как видите, всё делается достаточно просто. Таким образом вы можете добавить столько папок для поиска и хранения исполняемых файлов, сколько вам требуется.

Читайте также:  Выбрать раскладку клавиатуры синий экран клавиатура не реагирует windows

Источник

Путь к файлу в Linux

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

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

Пути файлов в Linux

Файловая система Linux очень сильно отличается от Windows. Мы не будем рассматривать ее структуру, это было сделано ранее. Мы сосредоточимся на работе с файлами.

Самое главное отличие, в том что адрес файла начинается не с диска, например, C:\ или D:\ как это происходит в Windows, а с корня, корневого системного каталога, к которому подключены все другие. Его адрес — /. И тут нужно сказать про адреса. Пути файлов linux используют прямой слеш «/» для разделения каталогов в адресе, и это отличается от того, что вы привыкли видеть в Windows — \.

Например, если в Windows полный путь к файлу на рабочем столе выглядел C:\Users\Sergiy\Desktop\ то в путь файла в linux будет просто /home/sergiy/desktop/. С этим пока все просто и понятно. Но проблемы возникают дальше.

В операционной системе Linux может быть несколько видов путей к файлу. Давайте рассмотрим какие бывают пути в linux:

  • Полный, абсолютный путь linux от корня файловой системы — этот путь вы уже видели в примере выше, он начинается от корня «/» и описывает весь путь к файлу;
  • Относительный путь linux — это путь к файлу относительно текущей папки, такие пути часто вызывают путаницу.
  • Путь относительно домашний папки текущего пользователя. — путь в файловой системе, только не от корня, а от папки текущего пользователя.

Рассмотрим теперь подробнее как выглядят эти пути в linux, а также разберем несколько примеров, чтобы было окончательно понятно. Для демонстрации будем пользоваться утилитой ls, которая предназначена для просмотра содержимого каталогов.

Например, у нас есть такой каталог в домашней папке с четырьмя файлами в нем:

Вот так будет выглядеть полный путь linux к одному из файлов:

Это уже относительный путь linux, который начинается от домашней папки, она обозначается

/. Дальше вы уже можете указывать подпапки, в нашем случае tmp:

Ну или путь файла в linux, относительно текущей папки:

В каждой папке есть две скрытые ссылки, мы сможем их увидеть с помощью ls, выполнив ее с параметром -a:

Первая ссылка указывает на текущую папку (.), вторая (..) указывает на папку уровнем выше. Это открывает еще более широкие возможности для навигации по каталогам. Например, чтобы сослаться на файл в текущей папке можно использовать конструкцию:

Это бесполезно при просмотре содержимого файла. Но очень важно при выполнении программы. Поскольку программа будет сначала искаться в среде PATH, а уже потом в этой папке. А потому, если нужно запустить программу, которая находится в текущей папке и она называется точно также как и та что в каталоге /bin, то без явной ссылки что файл нужно искать в текущей папке ничего не получится.

Читайте также:  Openjdk install windows 10

Вторая ссылка вам позволяет получить доступ к файлам в папке выше текущей. Например:

Такие конструкции могут довольно часто встречаться при компиляции программ. Все эти символы и пути файлов linux вы можете применять не только в терминале, но и в любом файловом менеджере, что может быть очень удобно.

Но терминал Linux предоставляет еще более широкие возможности. Вы можете использовать простые символы замены прямо в адресах файлов или каталогов. Например, можно вывести все файлы, начинающиеся на f:

Или даже можно искать не только в папке tmp, а в любой подпапке домашней папки:

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

Выводы

Вот и все. Теперь вы знаете все что необходимо, чтобы не только правильно написать путь к файлу linux, но и выполнять более сложные действия, например, поиск файлов или навигация по каталогам с помощью команды cd. Если у вас остались вопросы, спрашивайте в комментариях!

Источник

Как найти расположение программы?

Подскажите, пожалуйста, как найти путь к утилите exp?

Это оракловская утилита для экспорта.

Получаю сообщения permission denied.

which exp ничего не выводит

/sbin, /usr/sbin, /usr/local/bin

Как найти? CentosOS 6.5

Спасибо, я написал так

whereis exp exp: /usr/share/man/man3p/exp.3p.gz /usr/share/man/man3/exp.3.gz

Путь должен быть связан с oracle.

Ну ты понял, куда Оракл установлен, там и ищи

Я пробывал искать где установлен oracle, но не нашел, писал теже команды что и для exp

# updatedb
# locate -r ‘bin/exp$’

Увидел, что ничего не выводит. Может это альяс баша?

А у тебя точно есть эта утилита?

нашел с помощью sudo find

Учи матчасть, кури маны. Оракл поставил, элементарных вещей не знает. Вон из профессии.

Ты действительно думаешь, что для специалиста по рихтовке необходимы знания системного администратора?

Умение пользоваться базовыми консольными утилитами — это не знания сисадмина, это знания ПРОДВИНУТОГО пользователя системы. И я говорю продвинутого только, чтобы успокоить тех кукаретиков, кто считает что консоль обычному пользователю не нужна.

Вот умение тонко настраивать файрвол или поднять DNS/DHCP/LDAP/Whatever-сервер — это уже можно отнести к знания уровня системного администратора.

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

Если ты про Oracle DBA, то если он самолично подымает этот самый Oracle на некой ОС(Linux,Windows, whatever), то он обязан знать её инструментарий(консоль, Powershell, WMI, whatever). Он не обязан знать его досконально, как системный администратор, это не его задача.

Так же как и сисадмин вполне себе должен знать и уметь составить SQL-запрос, но вовсе(хотя и может) не обязан разбираться с тонкостях построения баз данных.

Читайте также:  Brand mac os x

Я про человека, которые металл ровняет!
Ты вот орёшь «вон из профессии». А ты вообще в курсе кто он?

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

Источник

Куда Linux ставит программы. Коротко о файловой системе Linux.

Файловая система Linux очень сильно отличается от того, к чему привык пользователь Windows. Тут нет привычных дисков с их буквенным обозначением и нет папки Program Files.

Файловая система Линукс располагает папки по типу дерева, которое идет от некого корня.

И главное, любая папка может физически находится на другом диске, как логическом, так и физическом.

Скажем папку Home ставят на другой диск, папка хранит все документы пользователя и в случае переустановки системы, они так и останутся.

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

И так, мы отвлеклись. Каждая папка Linux хранит свой тип файлов:

/etc — здесь хранятся файлы разных конфигураций, настройки системы, скажем файл fstab хранит информация ваших файловых системах, в нем задаеться информация как их монтировать и что с ними делать. В былые времена я руками туда вписывал разделы виндусевских дисков, сейчас, благо, все монтируется автоматически.

/dev это папка файлов устройств, да в Линуксе каждое устройство это файл.

/boot это загрузчик

/media сюда монтируются съемные носители

Но это все тема отдельная, нас интересует именно куда программы то ставятся.

Тут я имею ввиду программы, которые ставит установщик из стандартных пакетов.

/usr вот в эту папку идут все программы пользователя. Там содержаться и исполняемые файлы, и библиотеки и прочее.

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

Ну ладно, продолжим.

/usr/bin — сюда помещаются исполняемые файлы программ

usr/lib — а здесь библиотеки, которые нужны программе

usr/sbin — сюда помещаются исполняемые файлы от имени администратора

/usr/share — прочие файлы программ

Как я писал выше, что существует правило распределения файлов, но оно не всегда соблюдается.

/opt ряд программ устанавливается в эту папку, там создаеться папка программы, в которой все ее файлы, по типу, как это происходит в виндоувс. Изначально это папка для установки проприетарных программ.

Но некоторые программы «идут еще дальше и , как сказать, ставят себя в папку /home/имя_пользователя/opt

Узнать, куда разместились файлы программы можно командой:

А через пакетный менеджер можно получить более подробную информацию, включая все графические файлы и тд

Источник

Оцените статью