cygwin和Linux-未设置$ USER时获取当前用户

时间:2018-09-09 21:13:42

标签: linux bash cygwin

我以为$ USER是UNIX系统中的标准,而cygwin则模仿了它,因此我一直在可以在cygwin和unix / linux上运行的bash脚本中使用它。

但是我有一个正在使用的cygwin主机,未设置$ USER。

注意:whoami打印MyHost \ user123不仅是user123,而且设置了$ USERNAME(它是Windows变量),因此我将脚本更改为使用$ USER(如果已设置),然后使用$ USERNAME。

作为解决方法,我将在Windows登录名中将其设置为用户定义的环境变量。

Win 7 cygwin系统(未设置$ USER)

uname -a
CYGWIN_NT-6.1-WOW host2 2.6.0(0.304/5/3) 2016-08-31 14:27 i686 Cygwin

Win 10 cygwin系统(已设置$ USER)

uname -a
CYGWIN_NT-10.0-WOW host3 2.6.0(0.304/5/3) 2016-08-31 14:27 i686 Cygwin

是否存在在cygwin和linux上获取当前用户登录名的最佳实践?

2 个答案:

答案 0 :(得分:2)

用于此目的的标准POSIX变量实际上是LOGNAME,因此您确实应该使用它。

答案 1 :(得分:1)

这种简单的方法呢?

USER=$(whoami | cut -d '\' -f 2)

对此的好处是,它甚至可以在whoami仅报告用户名(例如user123而不是MyHost\user123)的系统上运行。