6

我想做的事

$ 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 )多次更改我的环境变量,并且一切正常。

我能够在.envrc. 然后,我遇到了这个问题...


解决方案

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

4

1 回答 1

8

在 zsh 中,USERNAMEvar 很神奇。它不是一个正常的导出环境变量。从手册页:

   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)'

在其他 shell,如 bash 和 fish 中,这不是一个特殊的 var,您可以像设置任何其他 env var 一样设置它:

bash$ echo $USERNAME

bash$ export USERNAME=wtf
bash$ echo $USERNAME
wtf
于 2018-11-30T21:46:22.187 回答