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


当前回答

使用标准的Unix/Linux/BSD/MacOS命令logname检索登录用户。这忽略了环境和sudo,因为这些都是不可靠的记者。它将始终打印登录用户的名称,然后退出。这个命令大约在1981年就出现了。

My-Mac:~ devin$ logname
devin
My-Mac:~ devin$ sudo logname
Password:
devin
My-Mac:~ devin$ sudo su -
My-Mac:~ root# logname
devin
My-Mac:~ root# echo $USER
root

其他回答

对于Bash, KornShell (ksh), sh等。你的许多问题很快就会被回答:

man [function]

要获得您正在使用或通常更方便的系统的文档:

谷歌“man函数”

对于Linux和Unix略有不同的某些事情,这可能会给出不同的结果。

对于这个问题,只需在你的shell中输入“whoami”。

编写脚本:

myvar=$(whoami)

我在Solaris 9和Linux上使用的一种hack,它对这两种系统都很有效:

ps -o user= -p $$ | awk '{print $1}'

这个代码段打印带有当前EUID的用户名。

注意:这里需要Bash作为解释器。

在Solaris上,您会遇到上述方法的问题:

Id不接受-u和-n参数(因此必须解析输出) Whoami不存在(默认情况下) 我是谁打印当前终端的所有者(忽略EUID) $USER变量只有在读取配置文件(例如/etc/profile)后才能正确设置。

whoami的替代品是id - un -n。

Id -u将返回用户Id(例如root为0)。

在命令行中输入

whoami

or

echo "$USER"

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

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

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

$ whoami       # Without space