Jak znaleźć listę dostępnych powłok według wiersza poleceń?


20

Jak wyświetlić listę dostępnych powłok do użycia w wierszu poleceń?


(IFS=: && grep -rl tcsetpgrp $PATH | xargs grep -rl setrlimit)w systemie Debian wydaje się dawać dobre przybliżenie.
Stéphane Chazelas

Na Fedorze 20 zwraca /bin/bash /bin/crash /bin/gdb(i dowiązania symboliczne /usr/bin).
Cristian Ciupitu

Odpowiedzi:


30

Aby wyświetlić listę dostępnych poprawnych powłok logowania do użycia w danym momencie, wpisz następujące polecenie:

cat /etc/shells

Przykład:

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

Aby uzyskać informacje na temat powłoki odwiedź wikipedię .


Pamiętaj, że to nie będzie działać dla wszystkich systemów. Np. Solaris i HP-UX nie mają domyślnie pliku / etc / shells.
Warwick

Dlaczego mam /bin/truei /bin/falsena tej liście?
Bernhard

2
@bernhard - Istnieje dobre wyjaśnienie linku
Warwick

6

Możesz także użyć chsh -l Spowoduje to wydrukowanie listy powłok.

Przykład: -

[anurag@focused ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

3
Dla mniechsh: invalid option -- 'l'
Pandya

@ Pandya możesz podać kompletne polecenie, którego używasz. Możesz używać go z kombinacją innych metod powłoki lub konstrukcji takich jak ((...)) lub [...] lub [[...]]
Anurag Anand



@Pandya man7.org/linux/man-pages/man1/chsh.1.html Zapewnia to opcję -l. Wystarczy kliknąć link u góry strony, aby przejść do strony man linux-util
Anurag Anand

2

Co najmniej w OpenBSD i NetBSD:

$ getent shells

W systemie (Ubuntu) Linux i wielu innych unikatach (w tym BSD):

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

W systemie Solaris plik /etc/shellsmoże nie istnieć. Lista prawidłowych powłok znajduje się w plikushells(4) instrukcji. W moim waniliowym systemie Solaris 11.3 zawiera on następujące powłoki:

/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

Warto zauważyć, że na mojej instalacji też nie /usr/sfw/bin/zsh nie /usr/xp4/bin/pfshistnieje ...

Krótsza lista prawidłowych powłok systemu Solaris (usunięte duplikaty każdej powłoki):

/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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.