设置变量USERNAME无效。访问变量总是返回当前登录的用户。
james@localhost:~$ USERNAME=foo
james@localhost:~$ echo $USERNAME
james
我找不到任何解释此行为的参考资料或文档。好像$ USERNAME是某种特殊变量。还有其他吗?哪里记录或解释了此内容?
似乎您正在使用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] 删除。
我来说两句