Como definir várias variáveis ​​env para um comando bash

109

Devo definir as variáveis ​​EC2_HOME e JAVA_HOME antes de executar um comando (ec2-describe-regiões)

Como faço isso de uma vez?

SamLosAngeles
fonte

Respostas:

165

Você pode definir vars uma vez para um único comando, colocando-os na linha de comando antes do comando:

$ EC2_HOME=/path/to/dir JAVA_HOME=/other/path ec2-describe-regions

Como alternativa, você pode exportá-los no ambiente e, nesse caso, eles serão definidos para todos os comandos futuros:

$ export EC2_HOME=/path/to/dir
$ export JAVA_HOME=/other/path
$ ec2-describe-regions
Chris Dodd
fonte
7
Observe que, embora pareça incomum, você também pode escrever export EC2_HOME=/path JAVA_HOME=/path.
William Pursell
4
A opção única é bastante útil em scripts. Apenas uma observação para quem precisa executar o comando como root ou outro usuário, as variáveis ​​devem vir depois de sudo ou do usuário. Por exemplosudo -u somebody CVSROOT=:ext:[email protected]:/usr/local/ncvs CVS_RSH=ssh cvs co my/dir/ancient-file.py
Nagev
Existe um limite para o número de variáveis ​​que você pode fornecer por meio de prefixação?
Sam Thomas
Apenas o limite máximo do comprimento da linha de comando, que é muito grande no Linux.
Chris Dodd
2

Como outro sistema * nix, você pode adicionar a função a seguir em seu arquivo .bashrc no diretório HOME.

function startec2(){
    EC2_HOME=/path/to/dir
    JAVA_HOME=/other/path 
    ec2-describe-regions
}

Agora, você pode iniciar seu programa com o seguinte comando:

startec2
gzh
fonte
4
Pelo que eu sei, isso cria apenas variáveis ​​bash e não funcionará.
TNW