Como encontrar a lista de shells disponíveis por linha de comando?


20

Como listar shells disponíveis para uso pela linha de comando?


(IFS=: && grep -rl tcsetpgrp $PATH | xargs grep -rl setrlimit)em um sistema Debian parece dar uma boa aproximação.
Stéphane Chazelas

No Fedora 20, ele retorna /bin/bash /bin/crash /bin/gdb(e os links simbólicos de /usr/bin).
Cristian Ciupitu

Respostas:


30

Para listar os shells de login válidos disponíveis para uso no momento, digite o seguinte comando:

cat /etc/shells

Exemplo:

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

Para obter informações sobre o shell, visite a wikipedia .


Observe que isso não funcionará para todos os sistemas. Por exemplo, Solaris e HP-UX não possuem um arquivo / etc / shells por padrão.
Warwick

Por que tenho /bin/truee /bin/falsenesta lista?
Bernhard

2
@bernhard - Há uma boa explicação de / bin / true e / bin / false aqui ligação
Warwick

6

Você também pode usar chsh -l Isso imprimirá a lista de cartuchos.

Exemplo: -

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

3
Para mim,chsh: invalid option -- 'l'
Pandya

@ Pandand você pode fornecer o comando completo que está usando. Você pode usá-lo com a combinação de outros métodos de shell ou construções como ((...)) ou [...] ou [[...]]
Anurag Anand



@Pandya man7.org/linux/man-pages/man1/chsh.1.html Isso fornece a opção -l. Basta clicar no link no topo da página, para ir para linux-util página man
Anurag Anand

2

Em pelo menos o OpenBSD e o NetBSD:

$ getent shells

No (Ubuntu) Linux e muitos outros Unices (incluindo BSDs):

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

No Solaris, o arquivo /etc/shellspode não existir. A lista de invólucros válidos está contida no shells(4)manual. No meu sistema Solaris 11.3 de baunilha, isso lista os seguintes shells:

/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

Vale a pena notar que, na minha instalação, /usr/sfw/bin/zshnem /usr/xp4/bin/pfshexiste nem existe ...

Uma lista mais curta de shells Solaris válidos (duplicatas de cada shell removidas):

/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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.