Suponha que eu tenha esse script
export.bash :
#! /usr/bin/env bash
export VAR="HELLO, VARIABLE"
Quando executo o script e tento acessar $VAR
, não recebo valor!
echo $VAR
Existe alguma maneira de acessar o arquivo$VAR
executando apenas export.bash sem fornecê- lo?
bash
shell
unix
environment-variables
tarrsalah
fonte
fonte
source
oueval
ou ...)man source
não vai funcionar porquesource
é construído em bash, você precisa executarhelp source
Respostas:
Resposta rápida: Não.
Mas existem várias soluções possíveis.
O mais óbvio, que você já mencionou, é usar
source
ou.
executar o script no contexto do shell de chamada:Outra maneira é ter o script, em vez de definir uma variável de ambiente, imprimir comandos que definirão a variável de ambiente:
Uma terceira abordagem é ter um script que defina suas variáveis de ambiente internamente e depois invoque um comando especificado com esse ambiente:
Essa última abordagem pode ser bastante útil, embora seja inconveniente para uso interativo, pois não fornece as configurações no seu shell atual (com todas as outras configurações e histórico que você criou).
fonte
Para exportar a variável VAR primeiro, a maneira mais lógica e parece funcional é obter a variável:
ou
Agora, ao ecoar do shell principal, ele funciona
Vamos agora redefinir o VAR
Agora vamos executar um script para originar a variável e depois desmarcá-la:
o código: cat test-export.sh
Aqui está uma maneira
ATENÇÃO: As exportações são limitadas ao script que executa as exportações no console principal - tanto quanto um trabalho cron, eu o adicionaria como o console como abaixo ... para a parte do comando ainda questionável: eis como você faria correr a partir do seu shell:
No prompt de comando (desde que o export.bash tenha vários valores de eco)
cat v1.sh
Agora, desde que seja para seu uso - você pode disponibilizar as variáveis para seus scripts a qualquer momento, usando um alias do bash como este:
adicione isso ao seu .bashrc
fonte seu arquivo bashrc e você pode fazer como acima a qualquer momento ...
De qualquer forma, de volta ao resto ..
Isso o tornou disponível globalmente e depois executou o script.
simplesmente faça eco e execute a exportação no eco!
cat export.bash
Agora no script ou no console, execute:
Experimentar:
Vários valores, desde que você saiba o que está esperando em outro script usando o método acima:
cat export.bash
cat test-export.sh
Agora os resultados
e a atualização final final para atribuir automaticamente, leia as VARIÁVEIS:
O script: cat test-export.sh
fonte
Executar
Quaisquer variáveis que você origine de um arquivo após isso serão exportadas para o seu shell.
Quando terminar, execute. Isso desativará o modo allexport.
fonte
bash source export
no GoogleFoi encontrada uma maneira interessante e interessante de exportar variáveis de ambiente de um arquivo:
em
env.vars
:script de teste:
fonte
Outra solução alternativa que, dependendo do caso, pode ser útil: criar outra bash que herda a variável exportada. É um caso particular da resposta de @Keith Thompson, todos esses inconvenientes.
export.bash:
Agora:
fonte
. ./export.bash
bash
como filho do shell atual. E como jáVAR
foi exportado antes, essa chamada incluirá a variável Obviamente, se você digitar,exit
oVAR
botão sairá. Você já conferiu?A resposta é não, mas para mim eu fiz o seguinte
o script: myExport
um alias no meu .bashrc
Mesmo assim, você a fonte, mas talvez seja mais utilizável e interessante para outra pessoa.
fonte
Talvez você possa escrever uma função em ~ / .zshrc, ~ / .bashrc.
Por causa da variável de uso externa, é possível evitar a gravação do arquivo de script.
fonte