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 ".