Skip to Content.
Sympa Menu

gnl - RE: Um papo sobre shells

gnl AT framalistes.org

Subject: GNU // Linux // Software Livre // Privacidade // Segurança // Linha de comandos

List archive

RE: Um papo sobre shells


Chronological Thread  
  • From: Celso de Paiva Costa <celsocosta.btu AT hotmail.com>
  • To: "gnl AT framalistes.org" <gnl AT framalistes.org>
  • Subject: RE: Um papo sobre shells
  • Date: Sat, 26 Sep 2020 21:15:43 +0000
  • Accept-language: pt-BR, en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f9BKDhBECstk6fZcZ+B0C1p9KO9uqfzXi27PYqD9L7w=; b=PKbOWNyOe7ru62nSAvdn/nUniLIi9/HqwQtXvZgF/SyYCnjwAke9+7i6rYFiNRVeN/zuSpTwTe86u1MrdYzYL8odyz9wnA7b2sYruAD9AVBSu3fZHhJuz4xzZKlCHqEetDFk8bM06McIszF/nokXUNehCAHlKJnBP88U6wWLfkO2xQY0rBO3P2mUC8eksHqEOOVSeU32UwQUT48Jia93rOOUPOxC+CQXDMdq7pSMm1IFp9qzM9PexRinSLHkkTuv1lqcPUrwmztn4ZOQu5sQR8tRJ79mdEchN7qEq4SbLuGo29ZniYYJJ49N10zmztzfE5IdQtZKRPCZYa3w3fOQqg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K/dPlJXRpTWW2uhkz7udgi2KSKcm3OvTecBcE8K7LJW3lh28hbe+5HUR0T7qCOBFpJnnIm2rabxfWeSSj3ZDugVxA52Jx2ph0UZutlGQrbewjEhT56kYhzCJVfuCGx7Vo0jq2jGLKS2mH3TK604ox9IcIOQX+I77lM8KXIoxfE1gskEGJ5crNRcita67ScZV4buxUfaZWx8KTTda/Zi4eTv29rZ0nJDgfGGV7C3SLY5prKML90afgddWDWltWZLongh0uqmeACD7lb7EhsvGvDCqEY/4jEkIA9Q7uHaOBxsJIiCPT3w+WRn+fmJu8LvLNShT5Fp5w4aTM9Fs48ZgAw==

Olá Hugo,
Sempre usei o bash e nunca experimentei outro tipo de shell.
Vou aproveitar para experimentar.
Abs.

TFA
Celso Costa
(14)99771-3602 Vivo


De: gnl-request AT framalistes.org <gnl-request AT framalistes.org> em nome de Hugo Cerqueira <gnl AT framalistes.org>
Enviado: sábado, 26 de setembro de 2020 15:20
Para: Lista GNL <gnl AT framalistes.org>
Assunto: Um papo sobre shells
 
Olá, pessoal.

Hoje eu gostaria iniciar um debate sobre os shells. Primeiramente,
gostaria de saber qual shell ou quais shells vocês tem o hábito de
usar. Evidentemente, alguns shells são mais populares que outros. O
bash, por exemplo, já é instalado por default na maioria das distros.

Mas também é comum o dash, para uso não interativo, em alguns casos
(especialmente nas distros da família Debian). Desenvolvedores, muitas
vezes tem preferência pelo zsh ou pelo fish. No Alpine, por sua vez, o
padrão é o shell ash (que faz parte do Busybox).

Mas sejamos francos, existem muitos shells (procure pelos shells
disponíveis nos repositórios da sua distribuição, e talvez se
surpreenda com a quantidade), com variados propósitos, e talvez seja
difícil dedicar o merecido tempo a cada um deles. Isso é um pouco
triste porque podemos estar perdendo muitas boas opções, que sequer
cogitamos.

Por esse motivo, acredito que o compartilhamento de experiências pode
enriquecer muito o debate e nos ajudar a perceber se existe algo que
mereça mais a nossa atenção.

Recentemente, no breve período de tempo em que experimentei o OpenBSD
(em uma máquina virtual apenas), tive contato com o ksh (a versão do
OpenBSD do ksh, que por sua vez é um fork do Public Domain Korn Shell
-- pdksh). Por curiosidade, pesquisei por ksh nos repositórios do Void,
e vi que há duas implementações desse mesmo ksh disponíveis:

* loksh
* oksh

Existe também o ksh 93, da AT&T, mas essa já é uma implementação
diferente. O mksh também é outra implementação do ksh (que também se
baseou no pdksh). Mas enfim, resolvi focar nas implementações adaptadas
do ksh do OpenBSD. E não vi maneira melhor de decidir entre elas senão
testando as duas durante um tempo.

Até o momento não percebi nenhuma grande diferença entre as duas, mas
tenho tido preferência pelo oksh, que além de ser um pouco mais enxuto
(espaço ocupado no sistema) que o loksh, é mantido por um dos
desenvolvedores do OpenBSD.

E por falar em espaço ocupado, eu fiz uma comparação do espaço ocupado
pelo bash e por essas duas implementações do ksh no meu sistema:

$ xhog | egrep "bash|ksh"
oksh-6.7.1_1                                395KB
loksh-6.7.2_1                               454KB
bash-5.0.018_1                              6796KB

Se fizermos as contas, o espaço ocupado pelo bash é aproximadamente 17
vezes superior ao do oksh, e aproximadamente 15 vezes superior ao do
loksh. Isso não quer dizer que o bash seja ruim, mas isso me fez pensar
o que poderia estar por trás dessa enorme diferença. Evidentemente, que
o bash oferece mais recursos que o ksh. E em determinadas situações
esses recursos podem ser muito valiosos. No entanto, até agora não
senti falta de absolutamente nada, usando o ksh.

É bom lembrar também que todo esse espaço ocupado se traduz em mais
linhas de código, que por sua vez levanta preocupações relacionadas a
segurança. Esse foi, diga-se de passagem, o primeiro critério que me
levou ao ksh do OpenBSD.

Mas que fique claro, não estou sugerindo a ninguém que esteja usando o
bash que o troque por outro shell, mas que apenas reflita sobre o shell
que mais adere ao seu perfil, que pode muito bem ser o bash. E ainda,
este não é um ataque ao projeto GNU (do qual o bash faz parte), como
muito se feito por aí, pois por este projeto tenho o maior respeito.

Em outras palavras, o que proponho é um debate sadio sobre as opções
disponíveis, considerando prós e contras de cada opção, com interesses
e experiências de cada um.

E já que o assunto aqui é shell, acho que vale a pena mencionar também,
para quem eventualmente não conheça, um utilitário que tenho em grande
estima, chamado shellcheck. Trata-se de um utilitário de linha de
comando (embora se possa também usá-lo por uma interface Web, na página
do projeto, vide abaixo), que aponta possíveis falhas no seu código
shell.

Ele inclusive observa o tipo de shell a que se destina o seu script
(com base na primeira linha, conhecida como shebang), apontando
questões que sejam específicas do shell escolhido. Segue abaixo a
página oficial do projeto.

https://www.shellcheck.net/

--
Atenciosamente,

Hugo R. Cerqueira

"As invenções são, sobretudo, o
resultado de um trabalho teimoso."

(Alberto Santos-Dumont)


  • Um papo sobre shells, Hugo Cerqueira, 09/26/2020
    • RE: Um papo sobre shells, Celso de Paiva Costa, 09/26/2020

Archive powered by MHonArc 2.6.19+.

Top of Page