Como modificar a variável de ambiente no unix?

0

Eu quero modificar a variável de ambiente pelo valor dado pelo usuário. Por exemplo, o usuário fornecerá a variável a ser modificada e um valor para colocar na variável.

Eu tentei o comando:

set[variable[=val]]

Está funcionando bem, mas eu não sei se é certo modificar ou eu tenho que usar o comando export para essa finalidade?

Meu código é:

modify_env(){
echo "Environmental variable:"
read var
echo "Environmental value"
read value
set [var[=value]]
}
    
por mahnoor fatima 08.03.2015 / 14:06

1 resposta

0

De help set :

set: Set or unset values of shell options and positional parameters.

Portanto, os valores que você está inserindo com set estão literalmente se tornando parâmetros posicionais (argumentos) para set em vez de variáveis de ambiente.

$ set foo=bar 
$ echo "$foo" ##Prints nothing because it is not a variable

$ echo "$1"  ##Prints the first argument of the command "set foo=bar"
foo=bar

Agora de help export :

export: Set export attribute for shell variables.

Isso é o que você precisa para definir uma variável em todo o ambiente, ou seja, esse valor também será propagado para todos os processos filhos.

$ export foo=bar  ##setting environment variable foo having value "bar"
$ echo "$foo"  ##printing the value of "foo" in current shell
bar
$ bash -c "echo $foo" ##printing the value of "foo" in a subshell
bar

Então, em poucas palavras, você precisa usar o export builtin ao definir qualquer variável de ambiente.

    
por heemayl 08.03.2015 / 14:44