Qual diferença entre os diferentes shells do linux? [RESOLVIDO]

1. Qual diferença entre os diferentes shells do linux? [RESOLVIDO]

Lucas
he32

(usa Arch Linux)

Enviado em 22/10/2019 - 13:56h

Estava lendo alguns artigos sobre bash e shell e vi que o shell é quem interpreta os comandos e manda ao kernel, certo? Então, fui no arquivo /etc/passwd como root (sudo vim /etc/passwd) e o shell do meu usuário estava como /bin/bash, então eu mudei para /bin/sh e dei reboot na maquina. Quando a máquina voltou, pensava que os comandos que eu mandava no bash (ls, cd, man) não funcionaria, afinal era outro shell. E quando dei um desses comandos ele funcionou, e não deu nenhum erro,A única diferença que vi entre o bash e o sh, foi só o prompt, o bash mostra "usuario@maquina:diretorio$" enquanto o sh mostra só "$". A minha pergunta é: Qual a diferença entre um shell e outro? A única diferença é só essa visualização do prompt?


  


2. MELHOR RESPOSTA

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 22/10/2019 - 14:06h


No Linux e em outros sistemas semelhantes ao Unix, você tem várias opções de shells.

O shell é responsável não apenas por desenhar o seu pequeno prompt, mas também por interpretar seus comandos, especialmente se você colocar uma lógica complicada como pipes, condicionais e assim por diante.

bash é o shell mais comum usado como shell padrão para usuários de sistemas Linux . É um descendente espiritual de outros shells usados em toda a história do Unix. Seu nome, bash é uma abreviatura de Bourne-Again Shell, uma homenagem ao shell Bourne que foi projetado para substituir, embora também incorpore recursos do C Shell e do Korn Shell.

Ele é executado, atualmente, em /bin/bash - qualquer sistema com o bash o terá acessível aqui.

Não são apenas os usuários que usam shells, no entanto. Scripts ( shell scripts ) precisam de shells para interpretá-los. Quando você executa um script de shell, seu sistema precisa iniciar um processo de shell para executar seu script.

O problema é que shells diferentes têm pequenas inconsistências entre eles, e quando se trata de executar scripts, isso pode ser um problema real. O bash tem muitos recursos de script que são exclusivos apenas para o bash, e não para outros shells. Tudo bem, se você sempre usará o bash para rodar esses scripts. Outros shells podem tentar emular o bash, ou aderir ao padrão POSIX, que o bash suporta muito bem (embora adicione suas próprias extensões).
É possível especificar no topo de um script de shell que shell ele deve ser executado usando um shebang. Um script pode especificar #!/bin/bash na primeira linha, o que significa que o script deve sempre ser executado com o bash, em vez de outro shell.

/ bin / sh é um executável representando o shell do sistema . Na verdade, geralmente é implementado como um link simbólico apontando para o executável para qualquer shell que seja o shell do sistema. O shell do sistema é o tipo de shell padrão que os scripts do sistema devem usar. Nas distribuições do Linux, por um longo tempo isso era geralmente um link simbólico para bash , tanto que se tornou uma convenção sempre ligar / bin / sh para bash ou um shell compatível com bash . No entanto, nos últimos dois anos, o Debian (e o Ubuntu) decidiram mudar o shell do sistema de bash para dash - semelhante quebra de shell com uma longa tradição no Linux (bem, GNU) de usar o bash para / bin / sh. O Dash é visto como um shell mais leve e muito mais rápido, que pode ser benéfico para a velocidade de inicialização (e outras coisas que exigem muitos scripts de shell, como scripts de instalação de pacotes).

O Dash é bastante compatível com o bash, baseando-se no mesmo padrão POSIX. No entanto, ele não implementa as extensões específicas do bash. Existem scripts que usam #!/bin/sh (o shell do sistema) como seu shebang, mas que requerem extensões específicas do bash. Este é atualmente considerado um bug que deve ser corrigido pelo Debian e pelo Ubuntu, que requerem que / bin / sh seja capaz de funcionar quando apontado para dash.

Mesmo que o shell do sistema do Ubuntu esteja apontando para dash, seu login shell como um usuário continua sendo o bash neste momento. Ou seja, quando você efetua login em um emulador de terminal em qualquer lugar no Linux, seu shell de login será bash. A velocidade de operação não é tanto um problema quando o shell é usado interativamente, e os usuários estão familiarizados com o bash (e podem ter personalizações específicas do bash em seu diretório inicial).

O que você deve usar ao escrever scripts

Se o seu script requer recursos suportados apenas pelo bash, use #!/bin/bash .

Mas, se possível, seria bom certificar-se de que seu script é compatível com POSIX, e use #!/bin/sh , que deve sempre, de maneira confiável, apontar para o shell de sistema compatível com POSIX em qualquer instalação

3. Re: Qual diferença entre os diferentes shells do linux?

Alberto Federman Neto.
albfneto

(usa openSUSE)

Enviado em 22/10/2019 - 15:09h

São um pouco diferentes. até o código, funções etc...

mas a maioria dos comandos linux normais roda em todos os Shell
o mais clássico no linux é bash. sh é o shell padrão do Unix, e acho, o mais antigo.

Outros Shell, que uso e gosto, zsh e fish. veja meus artigos:

https://www.vivaolinux.com.br/artigo/zsh-Z-shell-Uma-alternativa-ao-bash
https://www.vivaolinux.com.br/artigo/Fish-Um-shell-facil-de-usar
https://edpsblog.wordpress.com/2018/08/10/sabayon-linux-com-ambientes-graficos-kde-e-enlightenment-e...
https://edpsblog.wordpress.com/2018/04/05/personalizando-o-shell-fish/
https://edpsblog.wordpress.com/2017/07/04/dica-variando-terminais-e-shell/
https://www.vivaolinux.com.br/artigo/Cansou-do-Konsole-e-GNOMETerminal-Existem-outros-terminais-esco...


¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: Sabayon, Gentoo, openSUSE, Mageia e OpenMandriva.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts