在bash中获取当前用户的用户名?
我正在用bash编写一个程序,需要获取用户的用户名。
我听说过一个名为whoami的东西,但我不知道它做了什么或如何使用它。
我用什么命令来获取当前用户名?
George asked 2019-03-03T04:25:05Z
10个解决方案
316 votes
在命令行输入
echo $USER
要么
whoami
要将这些值保存到变量,请执行
myvariable=$(whoami)
要么
myvariable=$USER
当然,您不需要创建变量,因为这是$USER变量的用途。
SethMMorton answered 2019-03-03T04:25:34Z
48 votes
id -u的替代方案是id -u -n。
id -u将返回用户ID(例如,0表示root)。
Brett answered 2019-03-03T04:26:08Z
16 votes
我在Solaris 9和Linux上使用的hack,它适用于它们:
ps -o user= -p $$ | awk '{print $1}'
此代码段显示具有当前EUID的用户名。
注意:你需要bash作为翻译。
在Solaris上,您遇到方法问题,如上所述:
$USER不接受/etc/profile和-n参数(因此您必须解析输出结果)
$USER不存在(默认情况下)
$USER打印当前终端的所有者(忽略EUID)
只有在读取配置文件后才能正确设置$USER变量(例如/etc/profile)
Elvenfighter answered 2019-03-03T04:27:23Z
11 votes
两个命令:
whoami打印用户ID以及组。格式:uid=usernumber(username) ...
whoami给出了当前的用户名
Sireesh Yarlagadda answered 2019-03-03T04:28:03Z
9 votes
使用标准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
Devin R answered 2019-03-03T04:28:30Z
6 votes
当需要root(sudo)权限时,使用脚本时通常为90%+,上述方法总是会给你$SUDO_UID作为答案。
要获得当前“登录”用户同样简单,但需要访问不同的变量:$SUDO_UID和$SUDO_USER。
他们可以回应:
echo $SUDO_UID
echo $SUDO_USER
或指定的,例如:
myuid=$SUDO_UID
myuname=$SUDO_USER
OldManRiver answered 2019-03-03T04:29:20Z
6 votes
对于myvar=$(whoami)等。您的许多问题都可以通过以下方式快速得到解答:
man [function]
获取您正在使用的系统的文档。
或者通常更方便:谷歌“男人的功能”对于linux和unix具有适度差异的一些事情,这可能会给出不同的结果。
对于这个问题,只需在shell中输入“whoami”即可。
编写脚本:
myvar=$(whoami)
Fred Mitchell answered 2019-03-03T04:30:22Z
5 votes
在Solaris OS中 - 我使用了此命令。
$ who am i # remember to use it with space.
在Linux上 - 有人已经在评论中回答了这个问题。
$ whoami # without space
Lin-man answered 2019-03-03T04:30:57Z
0 votes
在大多数Linux系统上,只需在命令行上键入whoami即可提供用户ID。
但是,在Solaris上,您可能必须通过确定通过以下命令登录的用户的UID来确定用户ID。
echo $UID
知道UID后,通过将UID与/ etc / passwd匹配来查找用户。
cat /etc/passwd | cut -d":" -f1,3
John answered 2019-03-03T04:31:40Z
-3 votes
获取当前任务的user_struct
#define get_current_user() \
({ \
struct user_struct *__u; \
const struct cred *__cred; \
__cred = current_cred(); \
__u = get_uid(__cred->user); \
__u; \
})
leesagacious answered 2019-03-03T04:32:09Z