Administração de Linux
medium

Administração de Linux Question #019e3987

Question Statement
Administração de Linux
#env
#unset
#environment-variable
#script-execution
Medium

Como posso suprimir a variável de ambiente existente FOOBAR apenas para a execução do script ./myscript?

A

unset -v FOOBAR; ./myscript

B

set -a FOOBAR=""; ./myscript

C

env -u FOOBAR ./myscript

Correct
D

env -i FOOBAR ./myscript

Official Explanation / Community Explanations

Resumo

Esta questão testa a capacidade de suprimir temporariamente uma variável de ambiente para um único comando sem afetar o shell atual. A abordagem correta usa env -u para remover a variável apenas para o processo filho.

Como funciona

Variáveis de ambiente são herdadas por processos filhos. Para suprimir uma variável para um comando específico, você pode modificar o ambiente apenas para esse comando. O utilitário env executa um comando com um ambiente modificado. A opção -u remove uma variável do ambiente antes de executar o comando.

Por que a resposta correta está certa

A opção C (env -u FOOBAR ./myscript) remove corretamente a variável FOOBAR apenas para a execução de ./myscript. O ambiente do shell original permanece inalterado.

Por que as outras opções estão incorretas

  • A: unset -v FOOBAR; ./myscript remove FOOBAR no shell atual, afetando comandos subsequentes. Não limita a alteração apenas a ./myscript.
  • B: set -a FOOBAR=""; ./myscript define FOOBAR como uma string vazia no shell atual e a marca para exportação, mas não a suprime; na verdade, a define como vazia, o que é diferente de remover.
  • D: env -i FOOBAR ./myscript inicia com um ambiente vazio e então define FOOBAR para o que vier a seguir (aqui é interpretado como um comando, causando um erro). A opção -i limpa todas as variáveis de ambiente, o que é muito abrangente.