Почему я больше не могу изменить переменную среды $USERNAME в macOS?
ЧТО Я ХОЧУ СДЕЛАТЬ
$ echo $USERNAME
myusername
$ export USERNAME=newvalue
$ echo $USERNAME
newvalue
ЧТО ПРОИСХОДИТ
$ echo $USERNAME
myusername
$ export USERNAME=newvalue
$ echo $USERNAME
myusername
ЧТО Я ПОПЫТАЛ
- Я пытался использовать:
sudo
...; - Я пытался использовать:
unset USERNAME
,
ПОЛЕЗНЫЕ ПРИМЕЧАНИЯ
ОС: macOS Mojave 10.14
Direnv: https://github.com/direnv/direnv
я использую
zsh
Что я сделал до выпуска
Я смог изменить свою переменную среды несколько раз, используя direnv
( https://github.com/direnv/direnv), и все работало хорошо.
Я был в состоянии установить локальные переменные env в .envrc
, Затем я столкнулся с этой проблемой...
РЕШЕНИЕ
https://unix.stackexchange.com/questions/483469/cannot-change-the-environment-variable
1 ответ
В зш то USERNAME
Вар волшебен. Это не обычный экспортированный env var. Со страницы руководства:
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