Set*_*ton 407
在命令行输入
echo "$USER"
Run Code Online (Sandbox Code Playgroud)
要么
whoami
Run Code Online (Sandbox Code Playgroud)
要将这些值保存到变量,请执行
myvariable=$(whoami)
Run Code Online (Sandbox Code Playgroud)
要么
myvariable=$USER
Run Code Online (Sandbox Code Playgroud)
当然,您不需要创建变量,因为这是$USER变量的用途.
Bre*_*ett 76
替代whoami是id -u -n.
id -u 将返回用户ID(例如0表示root).
小智 17
我在Solaris 9和Linux上使用的hack,它适用于它们:
ps -o user= -p $$ | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)
此代码段显示具有当前EUID的用户名.
注意:你需要bash作为翻译.
在Solaris上,您遇到方法问题,如上所述:
id不接受-u和-n参数(所以你必须解析输出)whoami 不存在(默认情况下)who am I 打印当前终端的所有者(忽略EUID)$USER只有在读取配置文件后才能正确设置变量(例如/etc/profile)Dev*_*n R 17
使用标准的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
Run Code Online (Sandbox Code Playgroud)
REALUSER="${SUDO_USER:-${USER}}"\nRun Code Online (Sandbox Code Playgroud)\n...让您获得常规用户(如果非 sudo)\xe2\x86\x92 或 \xe2\x86\x90当前 sudo 调用背后的常规用户。
\n小智 6
当需要root(sudo)权限时,使用脚本时通常为90%+,上述方法总是为您root提供答案.
获取当前"登录"用户同样简单,但需要访问不同的变量:$SUDO_UID和$SUDO_USER.
他们可以回应:
echo $SUDO_UID
echo $SUDO_USER
Run Code Online (Sandbox Code Playgroud)
或指定,例如:
myuid=$SUDO_UID
myuname=$SUDO_USER
Run Code Online (Sandbox Code Playgroud)
为了bash/ksh/sh等你的许多问题将很快被要么回答说:
man [function]
Run Code Online (Sandbox Code Playgroud)
获取您正在使用的系统的文档.
或者通常更方便:google"man function"这可能会给linux和unix有些差异的东西带来不同的结果.
对于这个问题,只需在shell中输入"whoami"即可.
编写脚本:
myvar=$(whoami)
小智 5
在Solaris OS中 - 我使用了此命令.
$ who am i # remember to use it with space.
Run Code Online (Sandbox Code Playgroud)
在Linux上 - 有人已经在评论中回答了这个问题.
$ whoami # without space
Run Code Online (Sandbox Code Playgroud)
小智 5
当前用户的用户名可以在纯 Bash 中通过参数扩展获取${parameter@operator}(Bash 4.4 中引入):
$ : \\u
$ printf '%s\n' "${_@P}"
Run Code Online (Sandbox Code Playgroud)
通过设置最后一个参数(存储在 中),使用内置变量:( 的同义词)代替临时变量。然后我们将其展开 ( ),就好像它是带有运算符的提示字符串一样。true$_\uP
这比使用 更好$USER,因为$USER它只是一个常规环境变量;它可以被修改、取消设置等。即使它不是故意篡改的,它仍然不正确的常见情况是在没有启动登录 shell 的情况下切换用户(su默认情况下)。