第1部分
getent应该是一个可执行文件吗?
在我的zsh设置中,我可以看到getent实际上被定义为一个函数
$ which getent getent () { if [[ $2 = <-> ]] then grep ":$2:[^:]*$" /etc/$1 else grep "^$2:" /etc/$1 fi }
如果我想从bash shell执行它,
bash -c "getent passwd user"
我得到一个getent: command not found错误。
第2部分
在Mac OSX中,无论用户标识是否有效, getent都会失败。 事实certificate,用户标识不保存在/etc/passwd文件中。 为什么是这样? 还有什么替代方法?
在Linux,Solaris和(我相信)* BSD系统getent是一个可执行文件,并将查询与正常查找function(/ etc文件,LDAP,NIS等)相同的一组数据库。
Os-x不提供getent,但是可以使用dscacheutil或dsutil程序(与目录服务后端交谈)获得类似的function。 网页search“osx getent”会给你更多的细节。