看看/etc/passwd文件。该文件向您展示了用户信息的存储方式。您的用户信息可能会或可能不会存储在此处(Unix 使用几种不同的数据库来存储用户),但格式是相同的。
基本上,Unix 使用用户 ID (UID) 来存储用户是什么。下一个条目是旧密码条目,然后是 UID、主要组 ID、GECOS字段、$HOME目录和用户的 shell。(在 MacOS 的命令中显示了三个额外的条目id -P。我不知道它们是什么,但它们使 GECOS 字段成为第八个字段而不是第五个字段)。
在您的系统上使用该id -P命令为您提供了此条目。一些系统使用getent甚至getpwent作为命令。你需要做的是解析这个条目。每个字段由冒号分隔,因此您需要第五个或第八个条目(取决于您必须使用的命令)。
awkandcut命令可以很好地做到这一点。cut可能更有效,但awk更常见,所以我倾向于使用它。
在awk中,标准字段分隔符是空格,但您可以使用-F参数来更改它。在 Awk 中,每行中的每个字段都有一个数字,并且前面有一个美元符号。该$0字段是整行。
使用awk,你得到:
id -P | awk -F: '{print $8}'
这表示接受id -P命令,并将:用作字段分隔符,并打印出第八个字段。花括号将所有AWK 程序括起来,并且需要单引号来防止 shell 解释$8.
在 BASH 中,您可以使用$( )来运行命令并返回其输出,因此您可以设置环境变量:
$USER_NAME=$(id -P | awk -F: `{print $8}`)
echo $USER_NAME