É uma boa ideia colocar variáveis ​​de ambiente em /usr/local/bin

É uma boa ideia colocar variáveis ​​de ambiente em /usr/local/bin

Estou usando o aws cfn para iniciar instâncias do Ubuntu e preciso passar variáveis ​​fornecidas no script de inicialização do cfn para os scripts na instância. Por exemplo, posso passar "db-server=db-2.domain.com" e há vários scripts na instância que desejam saber esse endereço.

No momento eu crio um arquivo em /etc/profile.d configurando vars com export, mas isso só funciona se o bash for iniciado como um shell de login, o que requer ações extras de minha parte para ter essas variáveis ​​em todos os lugares.

Então pensei que talvez pudesse criar arquivos em /usr/local/bin, por exemplo, get-db-host.shcom echo "db-2.domain.com"conteúdo, dessa forma eles estariam disponíveis para cada script sem necessidade de alterações.

É uma boa abordagem?

Responder1

É uma boa abordagem?

Tenho certeza de que todos os scripts dos quais você está falando são scripts de shell. Neste caso, você poderia simplesmente colocar todas as suas variáveis ​​em um arquivo de configuração:

db-server=db-2.domain.com

Coloque isso em um local padrão (por exemplo, /usr/local/etc/myapp/) e coloque-o em outros scripts:

. /usr/local/etc/myapp

Você também pode usar simplesmente /etc, obviamente.

Responder2

O método recomendado é apenas adicionar as variáveis ​​ao arquivo /etc/environment. Este arquivo é lido no login (doDocumentos do Ubuntu):

As configurações de variáveis ​​de ambiente que afetam o sistema como um todo (em vez de apenas um usuário específico) não devem ser colocadas em nenhum dos muitos scripts de nível de sistema que são executados quando o sistema ou a sessão da área de trabalho são carregados, mas em

/etc/environment - Este arquivo destina-se especificamente a configurações de variáveis ​​de ambiente em todo o sistema. Não é um arquivo de script, mas consiste em expressões de atribuição, uma por linha. Especificamente, este arquivo armazena as configurações de localidade e caminho de todo o sistema.

Então, basta editar /etc/environment/e adicionar

db-server=db-2.domain.com

Responder3

Eu diria não a essa ideia. Esse diretório /usr/local/bindestina-se a executáveis ​​​​locais da caixa e que não fazem parte de nenhum pacote específico (geralmente).

Em vez de fazer alguma configuração misteriosa que você está fazendo, coloque as variáveis ​​onde elas seriam claramente óbvias para outra pessoa que possa precisar executar sua tarefa.

Eu os colocaria em um arquivo no seu $HOMEdiretório e simplesmente obteria esse arquivo do seu arquivo $HOME/.bashrc.

Exemplo

if [ -f $HOME/.my_aws_env ]; then
    . $HOME/.my_aws_env
fi

Ou você pode ser legal e descolado e fazer isso em uma linha:

[ -f $HOME/.my_aws_env ] && . $HOME/.my_aws_env

informação relacionada