Como exportar variáveis que estão definidas, todas de uma vez?

32
O comando

set exibe todas as variáveis locais, como abaixo. Como faço para exportar essas variáveis de uma vez?

>set
a=123
b="asd asd"
c="hello world"
    
por Neerav 11.06.2013 / 22:23

4 respostas

54

Execute o seguinte comando, antes de definir as variáveis:

set -a 

página man:

-a
When this option is on, the export attribute shall be set for each variable to which an assignment is performed;

Para desativar essa opção, execute set +a posteriormente.

    
por 12.06.2013 / 00:09
4
'echo "export" $((set -o posix ; set)|awk -F "=" 'BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}')'
  1. Primeiro, obtenha todas as variáveis de ambiente definidas: (set -o posix ; set) Referência: link

  2. Obtenha 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: Valor da coluna awk-Printing sem nova linha e adicionando vírgula e link

  3. Agora, precisamos exportar essas variáveis, mas os xargs não podem fazer isso porque eles forquem o processo filho, a exportação deve ser executada no processo atual. echo "export" ... construa um comando que queremos e use '' para executá-lo. Isso é tudo: p.

por 06.03.2015 / 11:16
3

Você pode preceder export ao nome da variável usando awk e eval da saída resultante:

eval $(printenv | awk -F= '{ print "export " $1 }')
    
por 30.12.2015 / 03:49
1

Isso funciona se o seu shell for bash (possivelmente outros shells também)

export > /my/env/var/file

seu novo arquivo conterá um despejo de todas as variáveis env ... com entradas como

declare -x PORT="9000"
declare -x PORT_ADMIN="3001"
declare -x PORT_DOCKER_REGISTRY="5000"
declare -x PORT_ENDUSER="3000"
declare -x PRE_BUILD_DIR="/cryptdata6/var/log/tmp/khufu01/loud_deploy/curr/loud-build/hygge"
declare -x PROJECT_ID="hygge"
declare -x PROJECT_ID_BUSHIDO="bushido"

então para levantar o shell atual com todos esses env vars issue

source  /my/env/var/file
    
por 03.04.2018 / 18:16

Tags