linux脚本获取当前用户,在bash中获取当前用户的用户名? 您所在的位置:网站首页 Shell脚本获取当前登录用户 linux脚本获取当前用户,在bash中获取当前用户的用户名?

linux脚本获取当前用户,在bash中获取当前用户的用户名?

2024-07-12 10:55| 来源: 网络整理| 查看: 265

在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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有