De vez em quando, preciso saber o valor de uma variável de ambiente UNIX específica
. Claro, isso é fácil de fazer se você souber a grafia exata da
variável, como no caso do diretório de trabalho atual:
☺ echo $PWD
/Users/chip/code/chip.github.com
No entanto, e se eu não tiver certeza da grafia ou simplesmente quiser ver todas as
variáveis definidas para meu ambiente atual? Isso também é fácil de encontrar
, usando o env
comando (a saída abaixo é limitada para facilitar a leitura) :
☺ env
ARCHFLAGS=-arch x86_64
Apple_PubSub_Socket_Render=/tmp/launch-gANhjR/Render
Apple_Ubiquity_Message=/tmp/launch-yn5YIm/Apple_Ubiquity_Message
CLICOLOR=1
COMMAND_MODE=unix2003
DISPLAY=/tmp/launch-okscQD/org.macosforge.xquartz:0
EDITOR=/usr/bin/vim -f
.
.
.
Isso é muito eficaz e, como as variáveis de ambiente são classificadas, torna
mais fácil encontrar uma configuração específica.
Mas, env
, pode fazer mais! Ele também pode definir o ambiente para você para
utilitários específicos . Vejamos alguns exemplos de código Ruby para demonstrar este exemplo:
☺ cat env.rb
#!/usr/bin/env ruby
puts ENV['PWD']
Aqui você pode ver que este pequeno script simplesmente imprime o conteúdo da PWD
variável de ambiente em STDOUT
.
Para fins de sanidade, vamos verificar a configuração atual dessa variável apenas para ver
se ela corresponde às nossas expectativas:
☺ echo $PWD
/Users/chip/code/chip.github.com
Isso era o que eu esperava. Então, digamos que eu queira que este script use outra
configuração para essa variável de ambiente. Vou tentar defini-lo antes de chamar
o script:
☺ env PWD=/tmp ./env.rb
/Users/chip/code/chip.github.com
Mas espere! Isso não fez nada. Isso porque o env
herda comando
o ambiente atual por padrão, o que, como vimos antes tinha um valor diferente
do que o que passou: ./tmp
A maneira de contornar isso é passar a bandeira para , assim:-i
env
☺ env -i PWD=/tmp ./env.rb
/tmp
Agora ele usa a variável conforme o esperado. Lembre-se de que ele não configurou esta
variável permanentemente , mas sim apenas para a execução do utilitário que a
passamos, que neste caso era o script.env.rb
Para provar isso, vamos dar uma olhada na PWD
variável mais uma vez:
☺ echo $PWD
/Users/chip/code/chip.github.com
Com base nas informações acima, se você precisar revisar seu
ambiente atual ou configurá-lo para uma única execução de um utilitário, é fácil de fazer
usando o env
comando.
Para obter mais dicas sobre UNIX, consulte Learning the UNIX Command Line .