Comment trouver la liste des shells disponibles par ligne de commande?

20

Comment lister les shells disponibles pour une utilisation en ligne de commande?

Pandya
la source
(IFS=: && grep -rl tcsetpgrp $PATH | xargs grep -rl setrlimit)sur un système Debian semble donner une bonne approximation.
Stéphane Chazelas
Sur Fedora 20, il revient /bin/bash /bin/crash /bin/gdb(et les liens symboliques de /usr/bin).
Cristian Ciupitu

Réponses:

30

Pour répertorier les shells de connexion valides disponibles à utiliser au moment, tapez la commande suivante:

cat /etc/shells

Exemple:

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

Pour plus d'informations sur le shell, visitez wikipedia .

Pandya
la source
Notez que cela ne fonctionnera pas pour tous les systèmes. Par exemple, Solaris et HP-UX n'ont pas de fichier / etc / shells par défaut.
Warwick
Pourquoi ai-je /bin/trueet /bin/falsedans cette liste?
Bernhard
2
@bernhard - Il existe une bonne explication du lien
Warwick
6

Vous pouvez également utiliser chsh -l Cela imprimera la liste des coques.

Exemple :-

[anurag@focused ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
Anurag Anand
la source
3
Pour moi,chsh: invalid option -- 'l'
Pandya
@Pandya peut vous fournir la commande complète que vous utilisez. Vous pourriez l'utiliser avec une combinaison d'autres méthodes ou constructions de shell comme ((...)) ou [...] ou [[...]]
Anurag Anand
@Pandya man7.org/linux/man-pages/man1/chsh.1.html Cela fournit l'option -l. Cliquez simplement sur le lien en haut de la page pour accéder à la page de manuel linux-util
Anurag Anand
2

Sur au moins OpenBSD et NetBSD:

$ getent shells

Sur (Ubuntu) Linux et de nombreux autres Unices (y compris les BSD):

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

Sous Solaris, le fichier /etc/shellspeut ne pas exister. La liste des coques valides est contenue dans le shells(4)manuel. Sur mon système vanilla Solaris 11.3, cela répertorie les shells suivants:

/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

Il est à noter que sur mon installation, ni /usr/sfw/bin/zshni /usr/xp4/bin/pfshn'existe ...

Une liste plus courte des shells Solaris valides (les doublons de chaque shell ont été supprimés):

/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
Kusalananda
la source