Простейшим решением было бы просто объединить два файла:
cat.env.env.overwrite >.env.new
Тогда последняя обновленная запись будет активной. Теперь нам просто нужно удалить все двойные записи.
А если порядок и прочие комментарии не имеют значения:
for variable in \
$(cut -d= -f1.env.overwrite.env | sort |uniq) ;
do
grep ^${variable}=.env.overwrite || \
grep ^${variable}=.env ;
done
Пути поиска в библиотеке контролируются либо на системном уровне с помощью записей в базе данных /etc/ld.so.cache
, либо на уровне приложения путем установки переменной средыLD_LIBRARY_PATH
Система -широкая
Добавьте каталог (или каталоги ), содержащие необходимые библиотеки, в текстовый файл в разделе /etc/ld.conf.d
. В некоторых системах вам может потребоваться добавить их непосредственно в /etc/ld.conf
.
Запустите ldconfig
для обновления базы данных библиотеки/etc/ld.so.cache
Приложение
Установить или расширить LD_LIBRARY_PATH
, чтобы включить каталог (или каталоги ), содержащие необходимые библиотеки для контекста только вашего приложения:
LD_LIBRARY_PATH="/usr/local/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" /usr/local/bin/your_app arg1 arg2…
Если вы можете гарантировать, что LD_LIBRARY_PATH
пусто или не содержит ничего, относящегося к вашему приложению, вы можете упростить этот вызов:
LD_LIBRARY_PATH=/usr/local/lib /usr/local/bin/your_app arg1 arg2…
В любом случае, если у вас уже есть /usr/local/bin
в вашем $PATH
, вы можете упростить, не используя явный путь к приложению. Например,
LD_LIBRARY_PATH=/usr/local/lib your_app arg1 arg2…
В дополнение к ответу @roaima вы можете скомпилировать свое приложение для явного поиска в локальной библиотеке. Добавить
-Wl,-rpath /usr/local/lib
в вашу команду компиляции (при условии, что вы используетеgcc
).