o que você quer dizer com exportar de uma só vez? você pode usar dois pontos semi definir em uma linha ... como a = 123; b = "asd asd"; c = "Olá mundo"
setTambém mostra as funções e variáveis do sistema, como BASH_VERSION
Glenn Jackman
Sua pergunta não está clara. Esse é um trecho da setsaída que você está mostrando? Se sim, então não bashé. Deseja exportar todas as variáveis atualmente definidas, incluindo as variáveis especiais do shell? Ou apenas essas 3 variáveis estão em export a b c?
Stéphane Chazelas
export ${!T*}exportaria qualquer parâmetro definido cujo nome comece com T. Infelizmente, não parece haver uma maneira de gerar facilmente uma lista de todos os parâmetros definidos.
chepner
Respostas:
72
Execute o seguinte comando, antes de definir as variáveis:
set-a
página de manual:
-a
Quando esta opção está ativada, o atributo de exportação deve ser definido para cada variável para a qual uma atribuição é executada;
Agora, precisamos exportar essas variáveis, mas o xargs não pode fazer isso porque bifurca o processo filho, a exportação precisa ser executada no processo atual. echo "export" ...Crie um comando que desejamos e use `` para executá-lo. É tudo: p.
Bem-vindo à U&L SE. Talvez você possa editar sua postagem e dar algumas explicações.
Archemar 06/03
11
Não é correto supor que os nomes de variáveis de ambiente consistam apenas em az e AZ. Eles geralmente incluem sublinhados e dígitos também, então o padrão seria [a-zA-Z_][a-zA-Z0-9_]*. Existem algumas variações com base no shell que você está usando, mas esta é a abordagem segura / portátil.
Chris Johnson
Good point @ChrisJohnson - atualizado!
Wil Moore III
3
Você pode anexar exporto nome da variável via awke evala saída resultante:
printenvimprime as variáveis que já foram exportadas. Isso também não funcionará corretamente se houver variáveis que contenham caracteres de nova linha.
Stéphane Chazelas
2
Isso funciona se o seu shell for bash (possivelmente outras conchas também)
export >/my/env/var/file
seu novo arquivo conterá um despejo de todas as variáveis definidas atualmente ... com entradas como
set
Também mostra as funções e variáveis do sistema, como BASH_VERSIONset
saída que você está mostrando? Se sim, então nãobash
é. Deseja exportar todas as variáveis atualmente definidas, incluindo as variáveis especiais do shell? Ou apenas essas 3 variáveis estão emexport a b c
?export ${!T*}
exportaria qualquer parâmetro definido cujo nome comece comT
. Infelizmente, não parece haver uma maneira de gerar facilmente uma lista de todos os parâmetros definidos.Respostas:
Execute o seguinte comando, antes de definir as variáveis:
página de manual:
Para desativar esta opção, execute
set +a
depois.Exemplo:
Onde
environment
contém:fonte
function example(){ echo good; }; export -f example
Primeiro, obtenha todas as variáveis de ambiente definidas:
(set -o posix ; set)
Referência: https://superuser.com/questions/420295/how-do-i-see-a-list-of-all-currently-defined-environment-variables-in-a- linux-baObtenha todos os nomes de variáveis de ambiente, separados por espaço:
awk -F "=" 'BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}'
Referência: awk-Printing valor da coluna sem nova linha e incluindo vírgula e https://stackoverflow.com/questions/14212993/regular-expression-to-match-a-pattern-inside- comando awkAgora, precisamos exportar essas variáveis, mas o xargs não pode fazer isso porque bifurca o processo filho, a exportação precisa ser executada no processo atual.
echo "export" ...
Crie um comando que desejamos e use `` para executá-lo. É tudo: p.fonte
[a-zA-Z_][a-zA-Z0-9_]*
. Existem algumas variações com base no shell que você está usando, mas esta é a abordagem segura / portátil.Você pode anexar
export
o nome da variável viaawk
eeval
a saída resultante:fonte
printenv
imprime as variáveis que já foram exportadas. Isso também não funcionará corretamente se houver variáveis que contenham caracteres de nova linha.Isso funciona se o seu shell for bash (possivelmente outras conchas também)
seu novo arquivo conterá um despejo de todas as variáveis definidas atualmente ... com entradas como
então para levantar o shell atual com todos esses env vars questão
fonte