cygwin и Linux - Получить текущего пользователя, когда $ USER не установлен - PullRequest
0 голосов
/ 10 сентября 2018

Я думал, что $ USER был стандартом в системах UNIX, и что Cygwin эмулировал его, поэтому я использовал его в скрипте bash, который работает на cygwin и unix / linux.

Но у меня есть один хост 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 голосов
/ 10 сентября 2018

Стандартной переменной POSIX для этого на самом деле является LOGNAME, поэтому вам действительно следует использовать это.

0 голосов
/ 10 сентября 2018

А как насчет этого простого подхода:

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

Самое замечательное в этом то, что он работает даже в системах, где whoami сообщает только имя пользователя (например, user123 вместо MyHost\user123).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...