我在
/etc/NetworkDispatcher/dispatcher.d/
中为网络调度程序编写了一个脚本。
如何获取当前登录用户?
我已经尝试过这些命令:
$USER
$LOGNAME
谢谢您的帮助。
如果使用 /usr/bin/sudo 运行脚本,您可以从 $SUDO_USER 环境变量访问原始用户。
例如,如果这是脚本 test.sh 的内容:
#!/bin/sh
echo "USER: $USER"
echo "SUDO_USER: $SUDO_USER"
然后如果你以“alex”身份运行它:
alex@yuzu:~$ ./test.sh
USER: alex
SUDO_USER:
如果您通过 sudo 运行它:
alex@yuzu:~$ sudo ./test.sh
USER: root
SUDO_USER: alex
您可以使用
whoami
。或者,也许您可以获得使用 users
登录的用户列表。这实际上取决于您具体需要什么。
您也可以使用“最后”:
$ last | grep "logged in"
我需要这个作为 deb 文件中的 postins 脚本,上面的方法都不起作用,但这在 LinuxMint 19.3 上做到了(tricia):
`users`
此命令应该最适合您的情况:
logname
您可以使用 logname 命令显示或打印当前用户(也称为呼叫用户)的名称。该命令读取 var/run/utmp 或 /etc/utmp 文件以显示当前用户的名称。
来源:https://www.cyberciti.biz/faq/unix-linux-logname-command-examples-syntax-usage/
logname命令显示当前进程的登录名。这是用户登录时使用的名称,对应于系统状态环境中的 LOGNAME 变量。该变量仅在用户登录系统时设置。
logname 命令调用 getlogin 子例程来获取有关登录名的信息。
来源:https://www.ibm.com/docs/zh/aix/7.1?topic=l-logname-command