Você pode export
de suas variáveis:
VAR=foo
export VAR
ou:
export VAR=foo
No entanto, essas variáveis estarão visíveis no ambiente de todos os subprocessos.
Eu tenho um script como este:
#!/bin/bash
. config
./sub-script
Existem muitas variáveis na configuração e não quero passá-las para o sub-scirpt como ./subscript arg1 arg2 ... arg100500
.
Além disso, eu não gosto de uma ideia para source
config do sub-script, porque em geral pode não saber onde reside o arquivo de configuração.
Existe alguma outra maneira de disponibilizar a configuração no sub-script?
Se você puder definir seu script dessa maneira
#!/bin/bash
. config
. /path/to/sub-script
Quaisquer variáveis inicializadas em config
devem ficar disponíveis para o script principal e quaisquer scripts que ele origine.
Parece que seu script estava lançando um novo processo de shell não interativo, variáveis de shell inicializadas no script pai não estavam disponíveis - mas as variáveis de ambiente exportadas devem estar disponíveis para o novo processo filho.
Você pode passar o nome do caminho completo do arquivo de configuração para o sub-script. Por exemplo:
#!/bin/bash
. ./config
./sub-script ./config
O sub-script poderia então fazer algo assim:
cfg="$1"
shift
. "$cfg"
Você pode até ter um padrão para $cfg
, apenas no caso de $1
estar vazio.
cfg=${1:-/path/to/default/config}