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


当前回答

当需要root (sudo)权限时,在使用脚本时通常是90%以上,前面答案中的方法总是将root作为答案。

获取当前“登录”用户同样简单,但需要访问不同的变量:$SUDO_UID和$SUDO_USER。

它们可以被回应:

echo $SUDO_UID
echo $SUDO_USER

或指定的,例如:

myuid=$SUDO_UID
myuname=$SUDO_USER

其他回答

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

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

echo $UID

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

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

在命令行中输入

whoami

or

echo "$USER"

All,

从我在这里看到的所有答案都是错误的,特别是如果你进入了sudo模式,所有返回'root'而不是登录用户。答案是使用'who',找到eh 'tty1'用户并提取它。“w”命令的工作原理相同,var=$SUDO_USER获得真正的登录用户。

干杯!

TBNK

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

man [function]

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

谷歌“man函数”

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

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

编写脚本:

myvar=$(whoami)

获取当前任务的user_struct

#define get_current_user()              \
({                                      \
    struct user_struct *__u;            \
    const struct cred *__cred;          \
    __cred = current_cred();            \
    __u = get_uid(__cred->user);        \
    __u;                                \
})