Команда '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:'