Почему я больше не могу изменить переменную окружения $ USERNAME в macOS? - PullRequest
0 голосов
/ 21 ноября 2018

ЧТО Я ХОЧУ ДЕЛАТЬ

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

ЧТО ПРОИСХОДИТ

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

ЧТО Я ПОПЫТАЛ

  • Я пытался использовать: sudo ...;
  • Я пытался использовать: unset USERNAME.

ПОЛЕЗНЫЕ ПРИМЕЧАНИЯ

ЧТО Я СДЕЛАЛ ПРОБЛЕМУ

Мне удалось несколько раз изменить переменную среды, используя direnv (https://github.com/direnv/direnv), и все работало хорошо.

Мне удалось установить локальные переменные env в .envrc. Затем я столкнулся с этой проблемой ...


РЕШЕНИЕ

https://unix.stackexchange.com/questions/483469/cannot-change-the-environment-variable

1 Ответ

0 голосов
/ 01 декабря 2018

В zsh USERNAME var - это волшебство.Это не обычный экспортированный env var.Со страницы man:

   USERNAME <S>
          The username corresponding to the real user ID of the shell process.  If you
          have sufficient privileges, you may change the username (and also  the  user
          ID  and group ID) of the shell by assigning to this parameter.  Also (assum-
          ing sufficient privileges), you may start a single command under a different
          username (and user ID and group ID) by `(USERNAME=username; command)'

В других оболочках, таких как bash и fish, это не специальный var, и вы можете установить его, как и любой другой env var:

bash$ echo $USERNAME

bash$ export USERNAME=wtf
bash$ echo $USERNAME
wtf
...