В POSIX нет ничего, что могло бы помочь, кроме id
. Попытка id
и возвращение к синтаксическому анализу /etc/passwd
, вероятно, настолько переносимы, насколько это возможно на практике.
BusyBox id
не принимает идентификаторы пользователей, но системы с BusyBox обычно представляют собой автономные встраиваемые системы, где разбора /etc/passwd
достаточно.
Если вы столкнулись с системой, отличной от -GNU, где id
не принимает идентификаторы пользователей, вы также можете попробовать вызватьgetpwuid
через Perl, если он доступен:
username=$(perl -e 'print((getpwuid($ARGV[0]))[0])) 2>/dev/null
if [ -n "$username" ]; then echo "$username"; return; fi
Или Питон:
if python -c 'import pwd, sys; print(pwd.getpwuid(int(sys.argv[1]))).pw_name' 2>/dev/null; then return; fi