Não é possível alterar a variável de ambiente

4

O QUE ESTOU USANDO

  • zsh
  • MacOS Mojave 14.10

O QUE QUERO FAZER

$ echo $USERNAME
myusername
$ export USERNAME=newvalue
$ echo $USERNAME
newvalue

O QUE ESTÁ ACONTECENDO

$ echo $USERNAME
myusername
$ export USERNAME=newvalue
$ echo $USERNAME
myusername

O QUE TENHO

Tentou definir USERNAME em .bashrc , .zshrc , .profile e nada muda ...

Tentei unset e reiniciei e nada muda ...

    
por Riccardo Persiani 22.11.2018 / 16:17

1 resposta

12

A variável shell USERNAME é especial no shell Z.

É sempre o nome da conta do ID do usuário do processo do shell.

Você não observará o comportamento observado nas conchas de Almquist, Watanabe, Korn ou Bourne Again. Essa variável é apenas uma variável de shell comum, que começa não definida, no que diz respeito a eles. Aqui está o shell Korn 93, por exemplo:

$ echo $USERNAME

$ USERNAME=wibble
$ echo $USERNAME
wibble
$

No shell Z, ele é iniciado como o nome da conta do UID do processo do shell. Uma tentativa de configurá-lo tentará alterar esse UID. Isso obviamente falha se você não é o superusuário e deixa a variável como antes.

Se você tivesse executado o shell Z como superusuário, no entanto, teria visto a variável USERNAME shell e o ID do usuário do processo do shell alterado.

root # echo $USERNAME
root
root # USERNAME=JdeBP
JdeBP %

Leitura adicional

por 22.11.2018 / 16:47