Defina a variável bash para que não possa ser desmarcada

1

Eu gostaria de definir uma variável de ambiente para todos os usuários através da /etc/profilequal os usuários não possam substituir ou desmarcar. Tenho certeza de que isso é possível, mas estou tendo problemas para localizar a documentação relevante para os built-ins sete / ou exportshell. Se isso é realmente possível, como isso pode ser feito?

cbmanica
fonte

Respostas:

2

Eu acredito que você está procurando readonly.

readonly FOO='bar'

Eles não podem ser alterados e também não podem ser desativados. No manual do Bash :

readonly [-aAf] [-p] [name[=value]] 

Marque cada nome como somente leitura. Os valores desses nomes não podem ser alterados pela atribuição subsequente. Se a -fopção for fornecida, cada nome se refere a uma função de shell. A -aopção significa que cada nome se refere a uma variável de matriz indexada; a -Aopção significa que cada nome se refere a uma variável de matriz associativa. Se as duas opções forem fornecidas, -Aterá precedência.

Se nenhum argumento de nome for fornecido ou se a -popção for fornecida, uma lista de todos os nomes somente leitura será impressa. As outras opções podem ser usadas para restringir a saída a um subconjunto do conjunto de nomes somente leitura.

A -popção faz com que a saída seja exibida em um formato que possa ser reutilizado como entrada. Se um nome de variável for seguido por =value, o valor da variável será definido como value. O status de retorno é zero, a menos que uma opção inválida seja fornecida, um dos argumentos de nome não seja uma variável válida do shell ou nome da função ou a -fopção seja fornecida com um nome que não seja uma função do shell.

slhck
fonte
Ah, certo, obrigado. Sabia que estava lá em algum lugar.
Cbmanica
Eu pensei que era a resposta também, mas tentei isso e também exportei a variável. Não pude desmarcar a variável no shell pai, mas pude desmarcá-lo no shell filho. (Usando Bash 4.1.7, VAR=foo, readonly VAR, export VAR, xterm, em seguida, no xterm, echo $VARexibe valor, unset VARnenhuma mensagem, echo $VARexibe em branco.
garyjohn
@garyjohn Huh, estranho. Funciona para mim com conchas para crianças lançadas no Bash. Embora eu não tenha o xterm, não posso tentar isso.
slhck
Eu acho que é conhecido por não trabalhar com conchas de crianças (ou pelo menos não é garantido que funcione). No meu caso, a solução é boa o suficiente.
Cbmanica