问题

在shell脚本中,如何获取当前的用户名?
找出如何在Linux或Unix等操作系统上运行的Bash或Ksh Shell下找到当前用户名?

解决方案

可以使用$USER或$USERNAME变量,它们不是bash内置的变量,但在bash启动文件中进行了设置。
或者可以使用id命令来获取当前用户名。

语法

要获取当前用户名,请键入:

echo "$USER"

获取当前用户名并将其存储到shell变量$u中:

u="$USER"
echo "User name $u"

id命令的语法为:

id -u -n

输出示例:

jack

要打印数字UID,请运行:

id -u

输出示例:

1001

以下脚本读取用户名并将其存储到变量_user和_uid中:

#!/bin/bash
_user="$(id -u -n)"
_uid="$(id -u)"
echo "User name : $_user"
echo "User name ID (UID) : $_uid"
在Linux / Unix Shell脚本中如何获取当前用户名

Shell脚本示例

只有root用户可以运行以下脚本:

#!/bin/bash
 
## get UID 
uid=$(id -u)
 
## Check for it
[ $uid -ne 0 ] && { echo "Only root may enable the nginx-chroot environment to the system."; exit 1; }
 
## Continue main logic with root user
...
..
...

关于$EUID的说明

变量EUID是只读的。它扩展为当前用户的有效用户ID,并在Shell启动时进行初始化。您可以使用以下语法通过$ EUID来确定用户是否是root用户:

# Find out if you are root or not for admin tasks.
(( EUID )) && { echo 'Run this script with root priviliges.'; exit 1; } || echo 'Running as root, starting service...'
日期:2019-11-20 08:54:12 来源:oir作者:oir