shellUSERNAME变量在 Z shell 中比较特殊。

shellUSERNAME变量在 Z shell 中比较特殊。

我正在使用什么

  • 桀骜
  • MacOS 莫哈韦 14.10

我想做的事

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

怎么了

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

我尝试过的

尝试设置USERNAME.bashrc.zshrc.profile没有任何变化......

尝试unset重置并没有任何变化...

答案1

shellUSERNAME变量在 Z shell 中比较特殊。

它始终是 shell 进程的用户 ID 的帐户名。

您不会观察到在 Almquist、Watanabe、Korn 或 Bourne Again shell 中观察到的行为。就它们而言,此变量只是一个普通的 shell 变量,开始时未设置。以下是 93 Korn shell,例如:

$回显$用户名

$ 用户名=wibble
$回显$用户名
摆动
$

在 Z shell 中,它以 shell 进程的 UID 的帐户名开始。尝试设置它将会尝试更改该 UID。如果您不是超级用户并将变量保留为之前的样子,这当然会失败。

但是,如果您以超级用户身份运行 Z shell,您就会看到USERNAMEshell 变量和 shell 进程的用户 ID 都发生了变化。

根#回显$用户名
根#用户名=JdeBP
平均血压 %

进一步阅读

相关内容