815просмотров
11.3%от подписчиков
27 ноября 2024 г.
Score: 897
Добрый вечер, здрасти. За чо купил, за то и продаю. На повестке — direnv. Эт полезная хуёвина для расширения оболочки. И она достаточно известна среди населения в загнивающем западе.
ㅤ
Позволяет загружать и выгружать переменные среды в зависимости от каталога. Грубо говоря — позволяет не засирать .profile всяким дерьмом. Работает так: перед каждым запуском оно проверяет наличие файла (.envrc или .env) в текущем или родительском каталоге. Если такой файл существует, то он загружается в подоболочку bash. И все экспортируемые переменные становятся доступны для текущей оболочки. Работает с большой четверкой: bash, zsh, fish, tcsh Суть — используем переменные среды для конкретного проекта, не трогая при этом ~/.profile. Что интересно, direnv это бинарник на golang, что уже подразумевает скорость и все плюхи связанные с этим. Для убунты ставится так: apt install direnv Как воткнуть это в другое место, подробно написано тут ну или спроси у медведя. Подключаем так, добавляем в ~/.bashrc: eval "$(direnv hook bash)" Для других шелов смотрим тут. Не забываем перечитать файл ~/.bashrc чтобы изменения вступили в силу. Так, поставили, молодцы! Проверяем чо получилось: cd /tmp
mkdir my-project echo ${FOO-bashdays} На экран выдалось: bashdays Переменная среды FOO не вывелась, логично, дальше: echo export FOO=foo > .envrc Ёпта, ошибка — direnv: error /tmp/my-project/.envrc is blocked. Run direnv allow to approve its content. Сработала защита от дурака, которая запретила нам использовать .envrc. Хе, ща пофиксим! direnv allow . Во! Лепота! direnv: loading /tmp/my-project/.envrc
direnv: export +FOO Повторяем первую команду: echo ${FOO-bashdays} Хуяк и получаем: foo Что и требовалось доказать, direnv отлично справилась с поставленной задачей. Теперь выходим из проекта и смотрим: cd .. direnv: unloading echo ${FOO-bashdays} Ииии барабанная дробь, у нас вывелось — bashdays! Какая же красота и любовь с первого взгляда! Рекомендую! Однозначно забираем себе в копилку и внедряем в свой воркфлоу, по крайней мере для всяких лабораторных испытаний эта штука подходит идеально. ➡️ Проект на гитхабе: https://github.com/direnv/direnv ⭐️ Star 12.6k tags: #bash #linux
—
🔔 ➡️