设置变量$ USERNAME无效

詹姆士

设置变量USERNAME无效。访问变量总是返回当前登录的用户。

james@localhost:~$ USERNAME=foo
james@localhost:~$ echo $USERNAME
james

我找不到任何解释此行为的参考资料或文档。好像$ USERNAME是某种特殊变量。还有其他吗?哪里记录或解释了此内容?

py

似乎您正在使用Z Shell,至少您所描述的行为在此处可重现:

zsh$ echo $USERNAME
user1
zsh$ USERNAME=test
zsh$ echo $USERNAME
user1
zsh$ 

联机帮助页zshparam给出了原因:

USERNAME对应于Shell进程的真实用户ID的用户名。如果您具有足够的特权,则可以通过分配此参数来更改外壳程序的用户名(以及用户ID和组ID)。同样(假设有足够的特权),您可以通过`(USERNAME = username; command)'在不同的用户名(以及用户ID和组ID)下启动单个命令。

因此,有足够的权限,例如,作为这样的作品,但前提user1有效的用户名:

su
zsh# echo $USERNAME
root
zsh# USERNAME=user1
zsh#  echo $USERNAME
user1
zsh# id
uid=1001(user1) gid=1000(users)   
groups=1000(users),...

是的,还有其他特殊变量,请注意中的<S>标记man zshparam,仅提及一些示例:

  • $? 最后一条命令返回的退出状态
  • $$ 该shell的进程ID
  • $EGID Shell进程的有效组ID
  • $SECONDS 自从Shell调用以来经过的秒数

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

设置 php 变量 $userName = swift Encodable $_POST['userName'] 变量的正确语法或方法是什么?

Moq成员变量不会因无效设置而引发错误

使用变量引用集合时出现“对象无效或不再设置”

如何在 bash 中取消设置无效的环境变量?

为什么显示属性设置为继承CSS变量无效?

设置等于表达式的新变量时,列名无效

BadValue无效或未设置用户区域设置。请确保正确设置LANG和/或LC_ *环境变量

循环遍历pl / sql中的clob数据。将变量设置为当前迭代时类型无效

当我将端口设置为环境变量时,Docker compose显示无效的端口错误

语言环境变量在远程shell中无效(perl:警告:设置语言环境失败。)

通过无效方法设置实例变量,而不是获取返回值

initdb.bin:无效的语言环境设置;检查LANG和LC_ *环境变量

在Outlook中使用变量设置NameSpace无效,但如果键入则有效

未设置SESSION ['username']

全局初始化失败:BadValue无效或未设置用户区域设置。请确保正确设置LANG和/或LC_ *环境变量

为什么$ username变量在if($ username = request('createdBy')){{

设置ColorDrawable的Alpha无效

设置无效的标签颜色

设置GOPATH无效

设置cookie无效

OpenShift设置无效参数

参数“增益”的设置无效

在bash中设置-A无效

ColorOrder设置无效

无效的变量选择

RuntimeError:无效的DISPLAY变量

无效的bash变量分配

变量的无效类型(列表)

变量替换-参考无效