Как найти список доступных оболочек по командной строке?

20

Как вывести список доступных оболочек для использования в командной строке?

Pandya
источник
(IFS=: && grep -rl tcsetpgrp $PATH | xargs grep -rl setrlimit)в системе Debian, похоже, дает хорошее приближение.
Стефан Шазелас
На Fedora 20 он возвращается /bin/bash /bin/crash /bin/gdb(и символические ссылки с /usr/bin).
Кристиан Чиупиту

Ответы:

30

Чтобы просмотреть список доступных допустимых оболочек для входа в систему, введите следующую команду:

cat /etc/shells

Пример:

pandya@pandya-desktop:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/ksh93

Для получения информации о оболочке посетите Википедию .

Pandya
источник
Обратите внимание, что это не будет работать для всех систем. Например, у Solaris и HP-UX по умолчанию нет файла / etc / shells.
Уорик
Почему у меня /bin/trueи /bin/falseв этом списке?
Бернхард
2
@bernhard - Существует хорошее объяснение / bin / верно и / бен / ложь здесь ссылка
Warwick
6

Вы также можете использовать chsh -l Это напечатает список оболочек.

Пример :-

[anurag@focused ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
Анураг Ананд
источник
3
Для меняchsh: invalid option -- 'l'
Пандя
@Pandya вы можете предоставить полную команду, которую вы используете. Возможно, вы используете его с комбинацией других методов оболочки или конструкций, таких как ((...)) или [...] или [[...]]
Анураг Ананд
Возможно , я имею man7.org/linux/man-pages/man1/chsh.1@@shadow-utils.html
Pandya
@Pandya man7.org/linux/man-pages/man1/chsh.1.html Это обеспечивает параметр -l. Просто нажмите на ссылку в верхней части страницы, чтобы перейти на страницу руководства linux-util
Anurag Anand
2

По крайней мере, на OpenBSD и NetBSD:

$ getent shells

В (Ubuntu) Linux и многих других Unix (включая BSD):

$ grep '^[^#]' /etc/shells

В Solaris файл /etc/shellsможет не существовать. Список действительных оболочек содержится в shells(4)руководстве. На моей ванильной системе Solaris 11.3 в нем перечислены следующие оболочки:

/bin/bash         /usr/bin/bash     /bin/pfbash   /usr/bin/pfbash
/bin/csh          /usr/bin/csh      /bin/pfcsh    /usr/bin/pfcsh
/bin/jsh          /usr/bin/jsh      /sbin/jsh     /usr/sbin/jsh
/bin/ksh          /usr/bin/ksh      /bin/pfksh    /usr/bin/pfksh
/bin/ksh93        /usr/bin/ksh93    /bin/pfksh93  /usr/bin/pfksh93
/bin/sh           /usr/bin/sh       /bin/pfsh     /usr/bin/pfsh
/bin/tcsh         /usr/bin/tcsh     /bin/pftcsh   /usr/bin/pftcsh
/sbin/sh          /usr/xpg4/bin/sh  /sbin/pfsh    /usr/xp4/bin/pfsh
/bin/zsh          /usr/bin/zsh      /bin/pfzsh    /usr/bin/pfzsh
/usr/sfw/bin/zsh

Стоит отметить, что на моей установке ни нет, /usr/sfw/bin/zshни /usr/xp4/bin/pfshсуществует ...

Более короткий список допустимых оболочек Solaris (удаляются дубликаты каждой оболочки):

/bin/bash       /bin/ksh        /bin/pfcsh      /bin/pfsh       /bin/sh
/bin/csh        /bin/ksh93      /bin/pfksh      /bin/pftcsh     /bin/tcsh
/bin/jsh        /bin/pfbash     /bin/pfksh93    /bin/pfzsh      /bin/zsh
Кусалананда
источник