有没有更优雅的方法来找出另一个用户的默认shell?

有没有更优雅的方法来找出另一个用户的默认shell?

有没有更优雅的方式来找出另一个用户的默认 shell(假设我有 root 权限并使用 GNU/Linux)?我知道我可以通过查看/解析/greping/etc /etc/passwd 来获得答案,但必须有一个实用程序(例如“id”或“chsh”)具有将此信息打印到 stdout 的开关。

id --shell username运行类似的程序以便立即获得答案就好了。

编辑:我看到我的问题的第一个答案可以归类为“解析/查看/greping”/etc/passwd,所以我想强调一下,我知道有很多方法可以做到这一点(shell 在线程序、函数、脚本......),但这不是我要问的。

我想知道大多数 GNU/Linux 发行版预装的一些标准工具或 coreutils 的一部分工具是否具有此功能。

答案1

该命令使用以下选项finger报告用户的 shell-l

finger -l user

但你仍然需要做进一步的处理,例如

finger -l user | awk '/Shell:/ {print $4}'

如果你只想要 shell 字段

答案2

我不知道有什么实用程序,但添加此功能似乎~/.bashrc足够优雅:

function usershell(){
 awk -F: -v name=$1 '$1==name{print $NF}' /etc/passwd
}

然后你就可以用用户名来调用它了。例如:

$ usershell terdon
/bin/bash

答案3

我想你正在寻找getent

getent passwd username | cut -d: -f7

相关内容