No FreeBSD, no TrueOS / PC-BSD, no DragonFly BSD, etc.
A lista de shells aprovados , isto é, shells que o administrador permite que os usuários alterem seu login shell para o comando chsh
, está na forma convencional /etc/shells
Arquivo. Um simples
cat /etc/shellsfornece uma lista de shells aprovados.
No entanto, essa não é exatamente a lista de shells installed . Embora muitos shells de terceiros (o próprio sistema operacional vem com os shells Almquist e TENEX C) se instalem em /etc/shells
quando instalados a partir de pacotes ou portas, isso não é garantido e é claro que o administrador pode ter alterado /etc/shells
para que existe um shell que foi instalado mas que não é aprovado .
A lista de shells installed não é difícil de encontrar. Como mencionado anteriormente, as conchas Almquist e TENEX C vêm com o sistema operacional, como /bin/sh
e /bin/tcsh
(a.k.a. /bin/csh
), respectivamente. Para eles, um adiciona a lista de shells instalados a partir dos pacotes. No sistema de pacotes do FreeBSD, todos os shells estão na área shells/
da hierarquia de pacotes, portanto, basta usar a ferramenta pkg
para consultar o banco de dados do pacote instalado:
pkg query "%o %n-%v %c" | awk '/^shells\// {$1="";print $0;}'
Isto irá pegar fish, rc, v7sh, heirloom-sh e similares se alguém os tiver instalado, mas também produzirá alguns falsos positivos para pacotes que estão na hierarquia shells/
, mas que não são per se , como conclusão do bash.
Leitura adicional
- shells / . árvore de ports do FreeBSD . freebsd.org.
-
pkg-query
. manual do FreeBSD . 2015. freebsd.org.
No OpenBSD
O OpenBSD é como o FreeBSD, TrueOS et al. com algumas diferenças. Ainda se corre
cat /etc/shellspara ver a lista de shells aprovados, e ainda existe a diferença entre shells aprovadas e instaladas.
O OpenBSD tem um gerenciador de pacotes mais antigo, e um conjunto diferente de shells que vêm no próprio sistema operacional.
No OpenBSD, o próprio sistema operacional vem com o shell Korn (pdksh, especificamente) e o shell C (não shell TENEX C) como /bin/sh
(também conhecido como /bin/ksh
) e /bin/csh
(não /bin/tcsh
) respectivamente.
Mais uma vez, os shells de terceiros adicionados a essa lista estão na área shells/
da hierarquia de pacotes, e o comando para encontrar os instalados é, portanto,
pkg_info -P -A | grep '^shells/'
Se você tiver o pacote sqlports instalado, também poderá usar sqlite3
para fazer consultas SQL no banco de dados /usr/local/share/sqlports
para localizar pacotes de shell instalados.
Leitura adicional
No Debian, Ubuntu, e outros
Novamente, a lista de shells aprovados pode ser obtida com
cat /etc/shellse novamente isso não é o mesmo que a lista de shells instalados.
No Debian e no Ubuntu, o shell every é gerenciado pelo gerenciador de pacotes. Não existem shells que "vêm com o sistema operacional".
Novamente, todos os pacotes de shell são marcados com facilidade. O APT (a Advanced Packaging Tool) tem a noção de "seções" em vez de uma hierarquia como os portais / pacotes BSD têm, e os pacotes shell estão na seção Shells
.
Existem várias ferramentas que podem consultar o banco de dados do gerenciador de pacotes. Eu escolho aptitude
aqui. Um corre
aptitude search '~i~sshells'que procura por pacotes instalados (
~i
) na seção ( ~s
) denominada shells
.
Esta é a sintaxe de pesquisa "abreviada" de aptitude
. A sintaxe de pesquisa "true" seria '?installed ?section(shells)'
, o que é um pouco mais para digitar. Além disso: você pode obter aptitude
para imprimir mais informações sobre cada pacote com sua opção de linha de comando -F
. Considere
aptitude search -F '%p %v %t %d' '~i~sshells'por exemplo.
Leitura adicional
- Shell . packages.debian.org.
- Daniel Burrows e Manuel A. Fernandez Montecelo (2016). manual do usuário do aptitude . Debian.