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

cygwin and Linux - Get current user when $USER not set

我认为 $USER 是 UNIX 系统中的标准,并且 cygwin 模拟了它,所以我一直在 bash 脚本中使用它,该脚本适用于 cygwin 和 unix/linux。

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

注意:whoami 不仅打印 MyHost\user123 用户 123,而且设置了 $USERNAME(它是一个 windows 变量),所以我将脚本更改为使用 $USER(如果已设置)然后 $用户名。

作为解决方法,我将在我的 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 上获取当前用户登录名的最佳实践?

这个简单的方法怎么样:

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

它的优点在于它甚至可以在 whoami 只报告用户名的系统上运行(例如 user123 而不是 MyHost\user123)。

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