Ric*_*ani 4 osx zsh environment-variables
我在用什么
我想做的事
$ echo $USERNAME
myusername
$ export USERNAME=newvalue
$ echo $USERNAME
newvalue
Run Code Online (Sandbox Code Playgroud)
怎么了
$ echo $USERNAME
myusername
$ export USERNAME=newvalue
$ echo $USERNAME
myusername
Run Code Online (Sandbox Code Playgroud)
我的尝试
试图USERNAME在.bashrc, 中设置,.zshrc但.profile没有任何变化......
尝试unset并重置,但没有任何改变......
Jde*_*eBP 12
USERNAMEshell变量是在Z shell特殊。它始终是 shell 进程的用户 ID 的帐户名。
您不会观察到您在 Almquist、Watanabe、Korn 或 Bourne Again shell 中观察到的行为。这个变量只是一个普通的 shell 变量,就他们而言,它开始时未设置。例如,这里是 93 Korn shell:
$ echo $USERNAME $ USERNAME=wibble $ echo $USERNAME 颤抖 $
在 Z shell 中,它以 shell 进程的 UID 的帐户名开头。尝试设置它将尝试更改该 UID。如果您不是超级用户,这当然会失败,并且将变量保留为以前的状态。
但是,如果您以超级用户身份运行 Z shell,您就会看到USERNAMEshell 变量和 shell 进程的用户 ID 都发生了变化。
root # echo $USERNAME 根 根 # 用户名=JdeBP JdeBP %