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



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

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

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

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

赢7天鹅系统($USER未设置(

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

赢10天鹅系统(有$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上获取当前用户的登录名是否有最佳实践?

这个的标准POSIX变量实际上是LOGNAME,所以你真的应该使用它。

这个简单的方法怎么样:

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

这样做的好处是,它甚至可以在whoami只报告用户名的系统上工作(例如user123而不是MyHostuser123(。