Como descobrir o número da versão de 'dash' sem recorrer a sistemas de gerenciamento de pacotes?

1

Eu tenho usado bash a maior parte do tempo e comecei a jogar com outros shells. Comecei com dash e tentei descobrir seu número de versão, mas o método usual como -v ou $version não funciona. Eu posso entender que --version não vai funcionar, já que isso é específico do GNU. Eu procurei na rede e encontrei as seguintes respostas, todas recorrendo ao sistema de gerenciamento de pacotes.

Como saber o número da versão do dash? (o usuário está usando o CentOS, então a resposta depende do sistema Redhat Package Management)

e

Como encontrar a versão do shell traço no Ubuntu bin? (Isto é do site AskUbuntu assim que a resposta depende da Advanced Package Tool)

Então, existe uma maneira de descobrir a versão de dash sem recorrer ao sistema de gerenciamento de pacotes? Ficarei muito surpreso se não houver uma maneira simples, porque sempre acreditei que consultar a versão de um software é uma das funções mais fundamentais. Se esse for realmente o caso, ficarei feliz em ouvir algumas explicações, por exemplo Qual é a filosofia por trás de tal projeto? Terei prazer em aceitar uma maneira simples de obter a versão dash sem recorrer ao sistema de gerenciamento de pacotes ou uma explicação convincente (perspectiva histórica também OK) sobre por que não posso fazer isso como a resposta aceita.

    
por Weijun Zhou 13.01.2018 / 09:04

1 resposta

4

I have always believed that querying the version of a software is one of the most fundamental functions.

Não é. É uma boa ideia ter que aprender.

Muitos anos atrás, não obtivemos um kernel, um gerenciador de pacotes e um repositório de pacotes. Nós temos um sistema operacional . tinha uma versão e, implicitamente, todos os programas componentes do sistema operacional estavam associados à versão do sistema operacional. Isso era tão verdadeiro para o BSD quanto para o PC-DOS.

O mundo AT & T no início da década de 1980 nos deu o programa what e a idéia de seqüências de versões incorporadas colocadas em binários pelo sistema de controle de código-fonte. Por algum tempo, pode-se usar isso para descobrir as versões das coisas, embora muitas vezes fossem as versões de arquivos de origem individuais em um programa, e não para o programa como um todo. (Eu mesmo coloquei esse mecanismo em todos os meus Utilitários de Linha de Comando da versão 1 para DOS e para OS / 2, junto com um programa WHAT de 16 bits.)

Ainda é possível hoje com alguns OpenBSD…

$ what /bin/sh
/bin/sh
        PD KSH v5.2.14 99/07/13.2
$ 
… e binários do FreeBSD…
% what /bin/tcsh
/bin/tcsh:
     Copyright (c) 1991 The Regents of the University of California.
% 
… mas este não é o caso com a maioria dos outros programas no OpenBSD e FreeBSD, e certamente não com o shell Almquist no FreeBSD…
% what /bin/sh
/bin/sh:
% 
… nem com o shell do Debian Almquist .
% what /bin/dash
/bin/dash:
% 

Em 1988, a Digital Research deu ao mundo a ideia de que as ferramentas usavam a opção /? para solicitar ajuda de opções, que a Microsoft copiou do DR-DOS para a versão 5.0 do MS-DOS em 1991 e IBM para o OS / 2 em 1992. Esta ideia, amplamente divulgada de boca em boca, na Fidonet, e em revistas de computador na época como algo muito bom, encontrou seu caminho nas convenções de codificação GNU como uma opção --help , à qual foi adicionado um --version opção. Mas isso não foi difundido para ferramentas não-GNU no mundo Unix, nem generalizado na época em que a concha de Almquist foi escrita em 1989; como a convenção GNU não apareceu até os anos 90.

O shell Bourne Again (publicado pela primeira vez em 1989) atualmente suporta --version . Isso também foi adicionado ao shell MirBSD Korn (o shell Korn original foi publicado pela primeira vez em 1983, lembre-se), o shell TENEX C (1983) e o shell Z (1990), que também atualmente suportam --version . Este mecanismo não foi, no entanto, adicionado ao shell do Almquist, nem mesmo pelo Debian, quando eles fizeram o shell Debian Almquist décadas mais tarde.

Dentro dos próprios shells, muitos shells (incluindo várias variantes do Korn, o shell Z, o shell Bourne Again e o shell TENEX C) possuem uma variável shell shellname_VERSION ou version que pode ser acessada em script de shell. Mais uma vez, a concha de Almquist não.

Leitura adicional

por 13.01.2018 / 12:35

Tags