Os comandos do Linux são intercambiáveis ​​com os comandos do Unix?

21

Acho que alguns comandos, por exemplo, lse pwdpodem ser usados ​​nos sistemas Linux e Unix.

  • Todos os comandos do Linux podem ser usados ​​nos sistemas Unix e todos os comandos do Unix podem ser usados ​​no Linux?
  • Ou apenas que todos os comandos do Linux podem ser executados no Unix, mas nem todos os comandos do Unix podem ser executados no Linux.
  • Ou que todos os comandos do Unix podem ser executados no Linux, mas nem todos os comandos do Linux podem ser executados no Unix?
  • Ou existe uma referência para me mostrar quais comandos podem ser executados no Linux e Unix e onde ambos têm seu próprio comando exclusivo?
Ted Wong
fonte
28
Leia sobre "POSIX".
Daniel Andersson
1
Note que não é um comando "Linux", é um comando GNU. As ferramentas GNU podem ser instaladas no FreeBSD, por exemplo.
new123456
2
Heck, as ferramentas GNU podem até ser instaladas no Unix.
MSalters

Respostas:

37

O comentário de Daniel Andersson sobre o POSIX é a resposta real aqui: existe um padrão chamado POSIX que define o núcleo de um sistema semelhante ao UNIX, tanto em termos de comandos do shell quanto de chamadas do sistema. Em teoria, se você escrever um software para a especificação POSIX, deverá ser possível compilar e executá-lo em qualquer sistema UNIX, Linux, BSD etc.

http://pubs.opengroup.org/onlinepubs/009695399/mindex.html fornecerá uma resposta definitiva sobre o que constitui o POSIX, mas essa não é uma resposta útil para fins práticos. Outra pessoa pode ter boas referências de comando para diferenças comuns entre sistemas Linux e outros sistemas semelhantes ao UNIX.

Um exemplo específico: "killall" no Linux mata todos os processos com um nome específico. No Solaris, ele desliga o sistema. Importante para não usar o errado.

pjc50
fonte
10
@ tchrist- se você realmente acha isso, digite "sudo apt-get" no Mac OS X e veja até onde ele chega.
David Robinson
7
@tchrist quando Ted Wong mencionou o Linux, ele obviamente estava falando sobre o sistema operacional que também é conhecido como GNU / Linux e diz ali mesmo, em nome de "GNU's Not Unix!" ;)
João Portela
4
Na verdade, pelo que entendi, o Mac OS X é um Unix certificado - algo que poucas variantes (se houver) das variantes do Linux conseguiram. Obviamente, isso seria apenas uma questão de certificação para um padrão muito básico.
Bill K
2
@tchrist L inux I s N ot L ni X
Dave
4
@Dave Bah. Não seja coxo. Chamar os bois pelos nomes, um cata cat, e lembre-se que uma rosa por qualquer outro nome ainda deve cheirar tão doce. Vá até uma caixa do Windows e aprenda o que não é o Unix . Mas o Linux é obviamente Unix.
tchrist
18

Atualmente, a maioria das distribuições Linux vem com muitos softwares GNU essenciais e o GNU Toolchain. O GNU foi um projeto para reescrever uma cópia gratuita do Unix que mais tarde foi combinada com o kernel do Linux. Quando você usa lsuma máquina Unix, está usando o original / o que aconteceu com o original ls. Quando você usa lsno GNU / Linux, usa o GNU lsque foi escrito do zero para ser o mesmo que ls. No entanto, nem todo software GNU é exatamente o mesmo que seus colegas do Unix. Agora que o Unix basicamente se transformou em BSD, as distribuições GNU / Linux também podem conter a versão BSD dessa ferramenta. Por exemplo, bsdtare tarvenha à mente.

tl; dr: Eles não são exatamente o mesmo código, mas devem, na maioria das vezes, ser exatamente o mesmo.

Jimmy Zelinskie
fonte
2
Quanto às diferenças, psé o exemplo mais irritante que consigo pensar. Comutadores diferentes em sistemas diferentes (Linux, AIX e Solaris). Também formato diferente de saída. Embora o objetivo desse comando seja o mesmo em todos os sistemas.
elmo
5

Você não especificou de qual UNIX está falando (BSD, System V ...). Não há resposta universal (UNIX). Cada variante UNIX possui seus próprios comandos personalizados (como o Mac OS X, por exemplo), portanto, mesmo entre UNIXes, existem comandos diferentes. Normalmente, os comandos antigos (como ls, pwd, cd, cp, mv, rm ...) tendem a ser os mesmos em todos os tipos de UNIX (incluindo Linux).

m0skit0
fonte
4

O que você precisa considerar primeiro é que os comandos são realmente pequenos programas, nesse sentido não necessariamente fazem parte do sistema operacional se você dividir os cabelos. Os antigos e os clássicos existem há muito tempo e estão incluídos na maioria dos sistemas * nix. O quão "completo" o sistema operacional é depende do que acompanha o pacote.

Como um exemplo da maioria dos CDs de recuperação / emergência dos quais você pode inicializar contêm uma pequena distribuição Linux, você descobriria que alguns comandos típicos podem não estar presentes nesses sistemas, apenas porque eles não seriam necessários na maioria dos casos.

posdef
fonte
3

No solaris, basta adicionar /usr/gnu/binao seu caminho ou trocá-lo /usr/bine seus conjuntos de comandos serão muito semelhantes

Linda Kateley
fonte