2012-04-26 3 views
1

До сих пор я использовал что-то вроде этого в скриптах, псевдонимы и в оболочке:Каков наилучший способ узнать имя пользователя в скрипте/команде bash?

qstat -u $USER 

Теперь я узнал, что ни $USER переменных ни $USERNAME не встроенные в Баше. В то время как $UID и $EUID есть.

Я мог бы, конечно, использовать $(whoami) или тому подобное. Существует множество способов узнать имя пользователя для текущего процесса. Но что самое лучшее, наиболее прочное и короткое из них и почему?

+0

[POSIX] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html) требует '$ LOGNAME' быть установлен, но упоминает, что' $ USER' также используется. Не основывайте решения безопасности на значения '$ LOGNAME' или' USER', потому что я могу выполнять 'USER = root' и' LOGNAME = root', даже если я зарегистрирован как 'pleb'. –

ответ

2

Обычно $LOGNAME определяется именем текущего пользователя.

6

whoami выглядит устаревшим. Как насчет предложения id -un?

Утилита whoami устарела утилитой id (1) и эквивалентна `` id -un '.

Смежные вопросы