1

Есть ли более элегантный способ узнать, что является оболочкой другого пользователя по умолчанию (при условии, что у меня есть привилегии root и я использую GNU/Linux)? Я знаю, что могу получить ответ, посмотрев /parsing /greping /etc /etc /passwd, но должна быть утилита (например, 'id' или 'chsh'), которая имеет переключатель, который печатает эту информацию в stdout ,

Было бы неплохо запустить что-то вроде id --shell username чтобы мгновенно получить ответ.

РЕДАКТИРОВАТЬ: я вижу, что первые ответы на мой вопрос можно классифицировать в «разборе / глядя / greping» / etc / passwd, поэтому я хотел бы подчеркнуть, что я знаю, что есть много способов сделать это (оболочка на лайнеры, функции, скрипты ...), но я не об этом.

Я хотел бы знать, есть ли у этой функции некоторые стандартные инструменты, поставляемые с большинством дистрибутивов GNU/Linux или инструментов, входящих в состав coreutils.

3 ответа3

4

Команда finger сообщает о оболочке для пользователя с опцией -l

finger -l user

но вам все равно придется делать дальнейшую обработку, например,

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

если вы просто хотите поле оболочки

0

Я не знаю ни одной утилиты, но добавление этой функции в ваш ~/.bashrc выглядит достаточно элегантно:

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

Затем вы можете позвонить по имени пользователя. Например:

$ usershell terdon
/bin/bash
0

Я думаю, что вы ищете getent

getent passwd username | cut -d: -f7

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .