Команда 'getent'

Часть 1

Является getent должен быть исполняемым файлом?

В моей настройке zsh я вижу, что getent определен как функция

$ which getent   
getent () {
    if [[ $2 = <-> ]]
    then
        grep ":$2:[^:]*$" /etc/$1
    else
        grep "^$2:" /etc/$1
    fi
}

Если я хочу выполнить его из оболочки Bash,

bash -c  "getent passwd user"  

Я получаю getent: command not found ошибка.

Часть 2

В Mac OSX getent не удается независимо от того, действительный идентификатор пользователя или нет. Оказывается, идентификатор пользователя не хранится в /etc/passwd файл. Почему так? И какова альтернатива?

2 ответа

Решение

В Linux, Solaris и (я полагаю) * системах BSD getent является исполняемым файлом и будет использовать тот же набор баз данных, что и обычные функции поиска (файлы /etc, LDAP, NIS и т. Д.).

Os-x не предоставляет getent, но вы можете получить аналогичную функциональность, используя dscacheutil или же dsutil программы (которые общаются со службой каталогов). Веб-поиск для "osx getent" даст вам более подробную информацию.

getent и dsutil не работают для меня также на OSX Bash.

Как указывает Павел выше, эта команда dscacheutil будет работать. Мне удалось проверить конкретного пользователя с помощью этой команды:

dscacheutil -q user -a name <username>. 

Список пользователей с этой командой

dscacheutil -q user | grep 'name:'
Другие вопросы по тегам