有没有更优雅的方式来找出另一个用户的默认 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