Direnv не загружает среду, когда оболочка запускается в каталоге с.envrc

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

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

Есть ли способ заставить переменные загружаться автоматически при создании оболочки?

Я использую MacOS Mojave (10.14.4) с direnv 2.20.1, используя bash в качестве оболочки. Я загружаю хуки через мой .bashrc,

3 ответа

Решение

Под macos, сохраняя .bashrc не имеет никакого эффекта Вместо этого используйте .bash_profile,

Я обнаружил, что в моей среде zsh мне нужно поставить экспорт перед каждой переменной в .envrc.

      VAR=x

не работает

Вместо этого используйте:

      export VAR=x

Есть ли способ сделать так, чтобы переменные загружались автоматически при создании оболочки?

вы можете добавить это в свой .bashrc

      eval "$(direnv hook bash)"

это активирует крючок в начале вашего удара. Если ваш bashrc не загружен, посмотрите в bash_profile/bashrc, чтобы узнать, кто кого вызывает.

вы можете попробовать " source ~/.bashrc ", чтобы увидеть, не написана ли ваша команда eval плохо или ваш bashrc не вызывается.

Другие вопросы по тегам