Wie finde ich die Liste der verfügbaren Shells über die Befehlszeile?

20

Wie liste ich verfügbare Shells für die Verwendung über die Befehlszeile auf?

Pandya
quelle
(IFS=: && grep -rl tcsetpgrp $PATH | xargs grep -rl setrlimit)auf einem Debian-System scheint eine gute Annäherung zu geben.
Stéphane Chazelas
Auf Fedora 20 kehrt es zurück /bin/bash /bin/crash /bin/gdb(und die Symlinks von /usr/bin).
Cristian Ciupitu

Antworten:

30

Geben Sie den folgenden Befehl ein, um verfügbare gültige Anmeldeshells für die Verwendung zu einem bestimmten Zeitpunkt aufzulisten:

cat /etc/shells

Beispiel:

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

Informationen zur Shell finden Sie auf Wikipedia .

Pandya
quelle
Beachten Sie, dass dies nicht für alle Systeme funktioniert. Zum Beispiel haben Solaris und HP-UX standardmäßig keine / etc / shells-Datei.
Warwick
Warum habe ich /bin/trueund /bin/falsein dieser Liste?
Bernhard
2
@bernhard - Es gibt eine gute Erklärung für / bin / true und / bin / false hier Link
Warwick
6

Sie können auch chsh -l Dies wird die Liste der Muscheln drucken.

Beispiel: -

[anurag@focused ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
Anurag Anand
quelle
3
Für michchsh: invalid option -- 'l'
Pandya
@ Pandya können Sie den vollständigen Befehl bereitstellen, den Sie verwenden. Möglicherweise verwenden Sie es mit einer Kombination aus anderen Shell-Methoden oder -Konstrukten wie ((...)) oder [...] oder [...]
Anurag Anand
@Pandya man7.org/linux/man-pages/man1/chsh.1.html Dies bietet die Option -l. Klicken Sie einfach auf den Link oben auf der Seite, um zur Manpage von linux-util
Anurag Anand vom
2

Auf mindestens OpenBSD und NetBSD:

$ getent shells

Unter (Ubuntu) Linux und vielen anderen Unices (einschließlich BSDs):

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

Unter Solaris ist die Datei /etc/shellsmöglicherweise nicht vorhanden. Die Liste der gültigen Shells ist im shells(4)Handbuch enthalten. Auf meinem Vanilla Solaris 11.3-System werden die folgenden Shells aufgelistet:

/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

Es ist erwähnenswert, dass auf meiner Installation weder existiert /usr/sfw/bin/zshnoch /usr/xp4/bin/pfsh...

Eine kürzere Liste gültiger Solaris-Shells (Duplikate aller entfernten Shells):

/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
quelle