Bash no Linux v.s Mac OS

23

Estou comprando um iMac. Eu tenho trabalhado no Linux por um longo tempo e eu faço um monte de scripts bash. Eu queria saber se todos os comandos bash e recursos estão disponíveis no Mac OS? Alguém tem alguma experiência com o Mac bash scripting? Eu aprecio sua opinião.

    
por alex 08.07.2013 / 21:47

5 respostas

28

O próprio Bash será basicamente o mesmo. Haverá algumas pequenas diferenças , mas nenhuma delas afetará a portabilidade de seus scripts. / p>

O principal problema é que os Coreutils do MacOS são baseados no FreeBSD, enquanto os utilitários que você está acostumado são mais prováveis do projeto GNU. Os coreutils do FreeBSD nem sempre são compatíveis com os coreutils GNU. Existem diferenças de performance e comportamento entre as versões GNU e FreeBSD do sed , grep , ps e outros utilitários .

Você pode instalar os coreutils GNU, mas eles têm g- prefixos (por exemplo, gcat para cat ). É não é uma boa ideia para substituir os coreutils do MacOS com os coreutils do GNU.

    
por 08.07.2013 / 22:22
5

Se for importante, bash no Mac OS X Mountain Lion ainda é a versão 3.2. A maioria das distribuições de Linux nos dias de hoje estão sendo fornecidas com o 4.x, portanto, você perderá os recursos da versão 4. Atualmente, a versão 4.2.45 está disponível no Homebrew como solução alternativa. Eu não sei qual versão está em Mavericks, não tenho certeza de que qualquer um que saiba possa dizer ainda.

Como mencionado por outros, bash é o mesmo bash (além das versões já mencionadas), mas o Mac OS X usa uma área de usuário (principalmente) do BSD. Muitos dos utilitários de sistema padrão têm opções ligeiramente diferentes ou se comportam de maneira ligeiramente diferente. Eles infelizmente são muito numerosos para listar aqui.

    
por 09.07.2013 / 09:24
4

Instale o homebrew (um gerenciador de pacotes) e instale as versões do gnu de alguns utilitários básicos:

$ brew install coreutils
$ brew install gnu-sed

Após cada instalação, ele mostrará as etapas que você pode seguir para que você possa simplesmente chamar date em vez de gdate , por exemplo, para que você ainda possa usar seus scripts bash do Linux sem qualquer modificação.

Parabéns, você acabou de solucionar 99% dos problemas de script entre plataformas.

    
por 09.07.2013 / 02:13
2

Uma coisa que pode ser frustrante vir do Linux para um Mac é que não há um sistema de arquivos /proc pseudo. Isso quebrou vários dos meus scripts do Linux, e pode ser complicado encontrar maneiras adequadas de obter as mesmas informações que você encontra em proc no seu script do Mac bash.

    
por 09.07.2013 / 08:56
0

Sou um usuário 'principalmente linux, ocasional' e acho que:

bash, ~/.bashrc e ~/.bash_aliases geralmente funcionam da mesma maneira.

Um problema que encontrei foi um dos comandos para alterar o prompt de cores não funcionou no Mac. A partir dessa e de outras experiências, aprendi a manter uma janela de terminal aberta e conectada ao configurar meu arquivo .bashrc . Isso foi o que eu posso testar 'new window' e encontrar algum erro no ainda logado.

    
por 09.07.2013 / 02:08