Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
bash: Где хранить библиотечные файлы
bash: Где хранить библиотечные файлы
Бросаем библиотечные файлы где ни попадя или Порядок нужен слабакам, гений властвует над хаосом
В bash подключение библиотеки
происходит следующей командой
. /dir/to/lib или
source /dir/to/lib
То есть надо знать где именно находится библиотека и ввести путь к ней.
Спортивного интереса ради я решила добавить немного беспорядка
и придумала апгрейд своей файлопомойки univertaz/, расширив
ее до пределов домашней директории.
Для начала создаем директорию под базу данных
Добавим права доступа к директории для пользователя nez.
Ведь нам нужно создать и изменять в дальнейшем базу данных без рутовских привилегий.
В файле .bashrc пишем функцию берущyю на себя всю рутину по обработке
действий связанных с созданием, подключением или обновлением базы.
Последней строчкой экспортируем функцию чтобы она была доступна из скриптов.
Перечитаем bashrc или перелогинемся.
В самом скрипте библиотека подключается к программе привычной многим строчкой
include libhello
Создадим тестовую библиотеку и поместим ее в любое место в директории $HOME
cat libhello
Во время первого использования функция include создаст базу
проиндексирует все файлы и имя библиотеки, а во "фронтенде" определит ее абсалютный путь и
подключит к скрипту. Зайдем в любую директорию, отличную от той где находится
библиотека и напишем тестовую программу cat test.sh
Запустим и получим строчку практически без задержки
>>hi from libhello
Значит база создалась, все файлы дерева из корня $HOME
проиндексированы. Полный путь к библиотеке найден и она
успешно подключилась к запущенному скрипту о чем свидетельствует
работа функции hello
Базу так же легко обновить в командной строке набрав в терминале
include
Что впрочем совсем необязательно, база сама будет при необходимости
обновляться если не будет найдена соответствующая библиотека.
Работа утилиты locate построена так что по времени поиска в большинстве
случаев вполне допустимо по времени выполнения использовать все поддерево
$HOME файловой системы. Но ничто не мешает при необходимости сузить это
пространство.
Храните библиотечные файлы практически в любом удобном месте при условии соблюдения
уникальности их имен. Главное теперь помнить имена всех созданных вами библиотек
разбросанных по всему домашнему пространству))) или же придумать какое нибудь хитрое расширение
для своих библиотечных файлов.
В bash подключение библиотеки
происходит следующей командой
. /dir/to/lib или
source /dir/to/lib
То есть надо знать где именно находится библиотека и ввести путь к ней.
Спортивного интереса ради я решила добавить немного беспорядка
и придумала апгрейд своей файлопомойки univertaz/, расширив
ее до пределов домашней директории.
Для начала создаем директорию под базу данных
Код: Выделить всё
sudo mkdir /usr/ml
Ведь нам нужно создать и изменять в дальнейшем базу данных без рутовских привилегий.
Код: Выделить всё
sudo sedfacl "u:nez:rwx" /usr/ml
действий связанных с созданием, подключением или обновлением базы.
Код: Выделить всё
include() {
if [ $1 ]; then
if file=$(locate -d /usr/ml/mlocate.db -qer /$1$ -n 1) ; then
source $file
else
updatedb -l 0 -o /usr/ml/mlocate.db -U $HOME
if file=$(locate -d /usr/ml/mlocate.db -qer /$1$ -n 1) ; then
source $file
fi
fi
else
updatedb -l 0 -o /usr/ml/mlocate.db -U $HOME
fi
}
typeset -x -f include
Перечитаем bashrc или перелогинемся.
В самом скрипте библиотека подключается к программе привычной многим строчкой
include libhello
Создадим тестовую библиотеку и поместим ее в любое место в директории $HOME
cat libhello
Код: Выделить всё
hello() {
echo hi from libhello
}
проиндексирует все файлы и имя библиотеки, а во "фронтенде" определит ее абсалютный путь и
подключит к скрипту. Зайдем в любую директорию, отличную от той где находится
библиотека и напишем тестовую программу cat test.sh
Код: Выделить всё
#!/bin/bash
include libhello
hello
>>hi from libhello
Значит база создалась, все файлы дерева из корня $HOME
проиндексированы. Полный путь к библиотеке найден и она
успешно подключилась к запущенному скрипту о чем свидетельствует
работа функции hello
Базу так же легко обновить в командной строке набрав в терминале
include
Что впрочем совсем необязательно, база сама будет при необходимости
обновляться если не будет найдена соответствующая библиотека.
Работа утилиты locate построена так что по времени поиска в большинстве
случаев вполне допустимо по времени выполнения использовать все поддерево
$HOME файловой системы. Но ничто не мешает при необходимости сузить это
пространство.
Храните библиотечные файлы практически в любом удобном месте при условии соблюдения
уникальности их имен. Главное теперь помнить имена всех созданных вами библиотек
разбросанных по всему домашнему пространству))) или же придумать какое нибудь хитрое расширение
для своих библиотечных файлов.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
- ALEXX
- Администратор
- Сообщения: 1350
- Зарегистрирован: 21 дек 2014, 14:59
- Откуда: Королёв
- Контактная информация:
Re: bash: Где хранить библиотечные файлы
nezabudka - С возвращением! Мы рады тебя видеть