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,因此您确实应该使用它。
我认为 $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,因此您确实应该使用它。