existe o arch em todos os sistemas linux / unix?

1

Tentando encontrar a maneira mais portátil de determinar a arquitetura da CPU de um sistema, seja 32 bits x86, 64 bits ou outra coisa (por exemplo, ARM). o comando arch existe em todos os sistemas? caso contrário, como testo isso a partir do shell?

    
por Dr.Avalanche 06.09.2016 / 22:46

3 respostas

3

arch é um comando do GNU. É apenas um sinônimo para uname -m . uname -m é portável na medida em que sua presença é garantida por POSIX e existe em sistemas históricos Unix com exceção dos extremamente precoces.

O que não é tão portátil é o significado da saída. Isso varia entre as variantes do Unix.

A saída não informa se o sistema é de 32 ou 64 bits. Nenhum comando pode dizer se o sistema é de 32 bits ou 64 bits, porque essa não é uma opção bem definida. Consulte comando do Linux para retornar o número de bits (32 ou 64)? para algumas maneiras de reportar a bitness de um sistema, para várias noções de 32/64 bits.

    
por 07.09.2016 / 01:55
2

O FreeBSD 10.3 não possui o comando arch .

Talvez uname -m seja mais apropriado? Mesmo assim, o FreeBSD gera amd64 , enquanto o OS X El Capitan produz x86_64 , então você precisa levar isso em consideração. Eu não tenho nenhum host Linux para testar isso ...

    
por 06.09.2016 / 23:03
0

No meu sistema OSX El Capitan de 64 bits, arch imprime i386 . Talvez você não deva confiar cegamente em sua produção.

Curiosamente,

$ file /usr/bin/arch
arch: Mach-O universal binary with 2 architectures
arch (for architecture i386):   Mach-O executable i386
arch (for architecture x86_64): Mach-O 64-bit executable x86_64

Para o Linux, os sistemas mais antigos não tinham a versão agora fornecida pelo GNU coreutils (e algumas máquinas tinham nenhum programa ou script arch ). Isso foi adicionado em 2007, citando o NEWS :

* Noteworthy changes in release 6.9.90 (2007-12-01) [beta]

** New programs

  arch: equivalent to uname -m, not installed by default
  But don't install this program on Solaris systems.

A razão pela qual o comentário disse para não instalar no Solaris é porque a Sun forneceu este utilitário a partir do SunOS nos anos 80. Páginas antigas de manuais são difíceis de encontrar; Datas do SunOS 4.1.3 isto como 1992 . O AIX e o HPUX não possuem o programa arch e, como outros recursos do SunOS copiados no Linux, este também não está no POSIX.

Se você precisava de algo mais confiável, a saída de config.guess funciona bem para a maioria das pessoas:

# You can get the latest version of this script from:                           
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess 

e se você ler o script, há referências a algumas máquinas (mais antigas) em que uname -m não funcionou conforme o esperado. Mas primeiro leia a licença no cabeçalho, para ver como isso se aplica a você.

    
por 06.09.2016 / 22:57