Respostas:
O Bash em si será basicamente o mesmo. Haverá algumas pequenas diferenças, mas nenhuma delas afetará a portabilidade de seus scripts.
O principal problema é que os coreutils do MacOS são baseados no FreeBSD, enquanto os utilitários com os quais você está acostumado são mais prováveis do projeto GNU. Os coreutils do FreeBSD nem sempre são compatíveis com os coreutils do GNU. Existem diferenças de desempenho 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 idéia substituir os coreutils do MacOS pelos coreutils do GNU.
Se isso importa, bash
no Mac OS X Mountain Lion ainda é a versão 3.2. Atualmente, a maioria das distribuições linux é fornecida com a versão 4.x, assim você estará perdendo os recursos da versão 4. Atualmente, a versão 4.2.45 está disponível no Homebrew como uma solução alternativa. Não sei qual é a versão do Mavericks, não sei se alguém que sabe ainda tem permissão para dizer.
Conforme mencionado por outros, bash
é o mesmo bash
(além das versões já mencionadas), mas o Mac OS X usa um país 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. Infelizmente, eles são numerosos demais para serem listados aqui.
Instale o homebrew (um gerenciador de pacotes) e instale as versões 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 em date
vez de, gdate
por exemplo, para que você ainda possa usar seus scripts bash do Linux sem nenhuma modificação.
Parabéns, você acabou de resolver 99% dos problemas de script de plataforma cruzada.
Uma coisa que pode ser frustrante vindo do Linux para um Mac é que não existe /proc
um sistema de pseudo-arquivos. Isso quebrou vários scripts do Linux e pode ser complicado encontrar maneiras adequadas de obter as mesmas informações encontradas no proc
script bash do Mac.
Eu sou um usuário 'principalmente linux, ocasionalmente mac' e acho que:
bash ~/.bashrc
e , ~/.bash_aliases
principalmente, funcionam da mesma maneira.
Um problema que encontrei foi um dos comandos para alterar o prompt de cores que não funcionava no Mac. Com essa e outras experiências, aprendi a manter uma janela do terminal aberta e conectada ao configurar meu .bashrc
arquivo. Ou seja, posso testar 'nova janela' e encontrar erros no que ainda está conectado.
ps
possui diferentes sinalizadores, assim comogrep
). Eu bati minha cabeça contra a parede algumas vezes tentando descobrir por que meu script Ubuntu não estava produzindo a mesma saída no meu Mac.