如何在Bash中获得当前用户的用户名?我用whoami吗?


当前回答

在大多数Linux系统上,只需在命令行上键入whoami即可提供用户ID。

但是,在Solaris上,您可能必须通过下面的命令确定登录用户的UID来确定用户ID。

echo $UID

一旦知道了UID,就可以通过与/etc/passwd文件匹配UID来查找用户。

cat /etc/passwd | cut -d":" -f1,3

其他回答

在命令行中输入

whoami

or

echo "$USER"

当前用户的用户名可以在纯Bash中通过${parameter@operator}参数展开(在Bash 4.4中引入)获得:

$ : \\u
$ printf '%s\n' "${_@P}"

内置(true的同义词)通过设置最后一个参数来代替临时变量,该参数存储在$_中。然后我们展开它(\u),就好像它是一个带有P操作符的提示字符串。

这比使用$USER更好,因为$USER只是一个常规的环境变量;它可以被修改、取消设置等。即使它没有被故意篡改,一种常见的情况是,当用户在没有启动登录shell (su的默认)的情况下切换时,它仍然是不正确的。

REALUSER="${SUDO_USER:-${USER}}"

…获取常规用户(如果不是sudo)→或←当前sudo调用背后的常规用户。

在Solaris操作系统中,我使用了这个命令:

$ who am i     # Remember to use it with space.

在Linux上——有人已经在评论中回答了这个问题。

$ whoami       # Without space

在大多数Linux系统上,只需在命令行上键入whoami即可提供用户ID。

但是,在Solaris上,您可能必须通过下面的命令确定登录用户的UID来确定用户ID。

echo $UID

一旦知道了UID,就可以通过与/etc/passwd文件匹配UID来查找用户。

cat /etc/passwd | cut -d":" -f1,3