Pesquisa de site

Direnv - Gerenciar variáveis de ambiente específicas do projeto no Linux


direnv é uma excelente extensão de código aberto para seu shell em um sistema operacional UNIX, como Linux e macOS. Ele é compilado em um único executável estático e suporta shells como bash, zsh, tcsh e fish.

O objetivo principal do direnv é permitir variáveis de ambiente específicas do projeto sem sobrecarregar o ~/.profile ou arquivos de inicialização do shell relacionados. Ele implementa uma nova maneira de carregar e descarregar variáveis de ambiente dependendo do diretório atual.

Ele é usado para carregar variáveis de ambiente de aplicativos de 12fatores (uma metodologia para construir aplicativos de software como serviço), criar ambientes de desenvolvimento isolados por projeto e também carregar segredos para implantação. Além disso, ele pode ser usado para criar soluções de instalação e gerenciamento multiversão semelhantes a rbenv, pyenv e phpenv.

Então, como funciona o direnv?

Antes do shell carregar um prompt de comando, direnv verifica a existência de um arquivo .envrc no diretório atual (que você pode exibir usando o comando pwd) e no diretório pai. O processo de verificação é rápido e não pode ser percebido em cada prompt.

Depois de encontrar o arquivo .envrc com as permissões apropriadas, ele o carrega em um subshell bash e captura todas as variáveis exportadas e as disponibiliza para o shell atual.

Instalando direnv em sistemas Linux

Na maioria das distribuições Linux, o pacote direnv está disponível para instalação a partir dos repositórios padrão usando o gerenciador de pacotes do sistema, conforme mostrado.

sudo apt install direnv		#Debian,Ubuntu and Mint
sudo dnf install direnv		#Fedora

Em outras distribuições como Red Hat Enterprise Linux (RHEL) e CentOS ou qualquer distribuição que suporte snaps, você pode instalá-lo como um CentOS ou qualquer distribuição que suporte snaps, você pode instalá-lo como um CentOS >estalo. Isso requer que você tenha o snapd instalado em seu sistema.

sudo snap install direnv

Como conectar o direnv ao seu Bash Shell

Depois de instalar o direnv, você precisa conectá-lo ao seu shell Linux atual. Por exemplo, para Bash, adicione a seguinte linha no final do arquivo ~/.bashrc.

Certifique-se de que ele apareça mesmo depois de rvm, git-prompt e outras extensões de shell que manipulam o prompt.

eval "$(direnv hook bash)"

Para shell ZSH

Anexe a seguinte linha no final do arquivo ~/.zshrc:

eval "$(direnv hook zsh)" 

Para casca de PEIXE

Anexe a seguinte linha no final do arquivo ~/.config/fish/config.fish:

eval (direnv hook fish)

Em seguida, feche a janela do terminal ativo e abra um novo shell ou forneça o arquivo conforme mostrado.

source ~/.bashrc
source  ~/.zshrc 
source ~/.config/fish/config.fish

Como usar direnv no Linux Shell

Para demonstrar como funciona o direnv, criaremos um novo diretório chamado tecmint_projects e iremos para ele.

mkdir ~/tecmint_projects
cd tecmint_projects/

A seguir, vamos criar uma nova variável chamada TEST_VARIABLE na linha de comando e quando ela for ecoada, o valor deverá estar vazio:

echo $TEST_VARIABLE

Agora criaremos um novo arquivo .envrc que contém o código Bash que será carregado pelo direnv. Também tentamos adicionar a linha “export the TEST_VARIABLE=tecmint” usando o comando echo e o caractere de redirecionamento de saída (>):

echo export TEST_VARIABLE=tecmint > .envrc

Por padrão, o mecanismo de segurança bloqueia o carregamento do arquivo .envrc. Como sabemos que é um arquivo seguro, precisamos aprovar seu conteúdo executando o seguinte comando:

direnv allow .

Agora que o conteúdo do arquivo .envrc foi autorizado a carregar, vamos verificar o valor de TEST_VARIABLE que definimos antes:

echo $TEST_VARIABLE

Ao sairmos do diretório tecmint_project, o direnv será descarregado e se verificarmos o valor de TEST_VARIABLE mais uma vez, ele deverá estar vazio:

cd ..
echo $TEST_VARIABLE

Cada vez que você entrar no diretório tecmint_projects, o arquivo .envrc será carregado conforme mostrado na captura de tela a seguir:

cd tecmint_projects/

Para revogar a autorização de um determinado .envrc, use o comando deny.

direnv deny .			#in current directory
OR
direnv deny /path/to/.envrc

Para obter mais informações e instruções de uso, consulte a página de manual direnv:

man direnv

Além disso, direnv também usa um stdlib (direnv-stdlib) que vem com diversas funções que permitem adicionar facilmente novos diretórios ao seu PATH e fazer muito mais.

Para encontrar a documentação de todas as funções disponíveis, verifique a página de entrada manual direnv-stdlib:

man direnv-stdlib

Isso é tudo que tínhamos para você! Se você tiver alguma dúvida ou opinião para compartilhar conosco, use o formulário de feedback abaixo.