Unset read only variables

3

É possível cancelar ou alterar uma variável readonly no Korn Shell? Eu estou usando o AIX 5.

    
por chanchal1987 06.01.2012 / 16:10

1 resposta

5

Não que eu saiba. Pelo menos, as formas óbvias não funcionam: você não pode unset uma variável somente leitura ou remover o atributo somente leitura com typeset +r . Isso vale para todas as variantes do ksh que eu vi, e para o bash, mas há versões do ksh como no AIX 4.3 que permitem typeset +r (que zsh também permite).

Tecnicamente, você pode fazer isso de fora: conectar-se ao processo ksh com um depurador e inverter o bit na memória, onde o processo ksh armazena a informação de que a variável é somente leitura. Portanto, uma variável readonly não é um recurso de segurança absoluto.

Se você precisar definir uma variável com um valor diferente antes de iniciar um comando, faça isso em env :

readonly foo='some value'
env foo='other value' mycommand

Como alternativa, torne a variável somente leitura em um escopo restrito (em uma função).

    
por 06.01.2012 / 19:15