Todas as diferentes distribuições do Linux possuem as mesmas linhas de comando? [fechadas]

3

Todas as diferentes distribuições do Linux possuem as mesmas linhas de comando? O que eu quero saber é a mesma linha de comando funciona para todos os tipos de distribuições Linux (CentOS, Fedora, Ubuntu, etc) ou se todos eles têm diferentes linhas de comando?

    
por Kaung Sett 28.09.2018 / 06:02

3 respostas

9

Eu estou escolhendo interpretar esta questão como uma questão sobre a portabilidade de comandos e shells em várias distribuições Linux. Uma "linha de comando" pode significar "um comando escrito no prompt do shell" e "o próprio shell". Espero que esta resposta aborde estas duas interpretações da "linha de comando".

A maioria dos sistemas Unix fornece os mesmos utilitários básicos para trabalhar no prompt do shell. Esses utilitários estão funcionando basicamente da mesma maneira, já que são padronizados. Além disso, a sintaxe usada para escrever comandos shell é padronizada (loops, redirecionamentos, pipes, processos em segundo plano, atribuições de variáveis, citações, etc.). O padrão é chamado POSIX e pode ser encontrado aqui (consulte a seção" Shell e utilitários ").

Na maioria dos Unices (especialmente no Linux por algum motivo), os utilitários padrão foram estendidos com funcionalidade extra, mas a funcionalidade descrita pelo padrão POSIX deve ser implementada. Se um utilitário padrão não estiver de acordo com o padrão POSIX, você provavelmente deve enviar um relatório de bug sobre isso.

Em particular, o próprio shell é freqüentemente estendido para oferecer uma experiência interativa mais conveniente, ou para fornecer recursos de programação de shell mais avançados. O shell, sendo um aplicativo como qualquer outro, vem em vários tipos (implementações) e bash é o mais popular nos sistemas Linux (mas também está disponível como o shell padrão em, por exemplo, macOS e pode ser instalado em qualquer Unix). As conchas zsh e ksh também são populares e fornecem diferentes conjuntos de extensões, mas todas devem pelo menos ser capazes de fazer amplamente o que o padrão POSIX diz usando uma sintaxe comum (exceto ao usar extensões como tipos especiais de matrizes e formas mais extravagantes de correspondência de padrões de nome de arquivo, etc., embora algumas delas também sejam bastante semelhantes entre os shells).

Quanto a ferramentas não-padrão, como ferramentas para executar tarefas específicas que não são cobertas pelo padrão POSIX (como conversar com um banco de dados ou ajustar o nível de brilho de um monitor) ou que são específicas de um determinado Distribuição Linux (talvez para fazer gerenciamento de pacotes), para uma versão de uma distribuição Linux particular, ou para uma arquitetura de hardware específica etc., a portabilidade do comando dependeria da variante correta e da versão da ferramenta sendo instalada em um sistema que suporta o uso dessa ferramenta.

Em várias distribuições Linux, a variedade de ferramentas e utilitários disponíveis é bastante homogênea, e a portabilidade é geralmente boa (com a ressalva de que ferramentas específicas de distribuição e arquitetura podem ser diferentes ou ausentes). Ao olhar para o uso e escrita de scripts que devem funcionar em outros tipos de sistemas Unix, torna-se mais importante saber quais extensões são específicas para a variação GNU / Linux de ferramentas e utilitários, e o que se espera que funcione em um genérico. Sistema POSIX / Unix ".

    
por 28.09.2018 / 08:49
4

O Linux é apenas um kernel, não o SO, coisas que você usa diretamente, como comandos ou programas GUI ou desktops bonitos, não são fornecidos pelo kernel, mas por componentes do espaço do usuário, que são distribuídos com sistemas operacionais.

Os comandos usados no shell vêm de funções internas do shell ou de um pacote de software externo. Dependendo dos softwares que você instalou, eles podem ser iguais ou diferentes. Embora você sempre use comandos em seu shell, mas eles na verdade não têm quase nada a ver com o shell (Isso se aplica ao Windows / OS X / * BSD), apenas aprenda como o seu shell funciona.

É apenas algumas distros que, por padrão, instalam alguns softwares comuns, para que você tenha alguns comandos comuns disponíveis. Como você pode usar ls em quase todas as distros, porque quase todas as distros instalam o software linux-utils para você.

Em algumas distros, você tem mais liberdade para escolher os pacotes que deseja, nesse caso, você não pode obter ls disponível se você se recusar a instalar o linux-utils ou qualquer software que possa fornecer este comando. Observe também que diferentes pacotes de software podem entrar em conflito entre si se fornecerem comandos com o mesmo nome.

    
por 28.09.2018 / 06:18
4

Como uma linha de comando é interpretada depende do shell que está sendo executado e de como o programa chamado interpreta sua argumentos.

Existe um número de shells diferentes, e uma linha de comando usando um recurso particular de um shell pode não funcionar em outro shell.

Em geral, as várias distribuições do Linux incluem pelo menos os mesmos shells básicos, portanto, se você puder verificar se está executando o mesmo shell, poderá usar a mesma linha de comando. (É por isso que nos scripts de shell você geralmente coloca o shell necessário na primeira linha).

Editar

Veja os scripts de shell, por exemplo no estilo antigo /etc/init.d , e cada um deles começa com

#!/bin/sh

Portanto, estes esperam algum tipo de invólucro padrão, que e. no Debian é fornecido por dash . Para comparar, os scripts de shell que escrevo para mim começam com

#!/bin/bash

porque às vezes uso bash extensões. Há uma tonelada de outras conchas, veja por exemplo aqui

    
por 28.09.2018 / 08:09