No caso geral, você não pode (ou não deve ) substituir os comandos padrão. O motivo é que muitos scripts de administração do sistema e pacotes de terceiros provavelmente dependem desses comandos para se comportarem da maneira que eles fazem de imediato no OS X.
Portanto, se você apenas apagar os comandos do sistema e substituí-los por equivalentes GNU que possuem comportamento incompatível ou argumentos de linha de comando, provavelmente isso quebrará alguma coisa. Especialmente se você usar algum software que foi "portado" para o Mac OS X após ser originalmente projetado para ser executado no Linux ou BSD, pois esses tipos de programas têm maior probabilidade de depender de scripts de shell e comandos do sistema, em vez de chamar APIs do OS X.
O que você pode fazer é instalar um ambiente que instale os utilitários GNU em outro diretório sem substituir os padrões e, em seguida, ajuste sua PATH
variável de ambiente para dar prioridade aos comandos encontrados no diretório GNU antes mesmo de pesquisar nos diretórios do sistema. Você pode conectar isso para que ele apenas configure seu PATH dessa maneira se estiver iniciando um shell interativo; você pode pesquisar no Google como fazer isso bash
ou fazer outra pergunta no SU (ou procurá-lo, pois provavelmente já foi perguntado antes) se quiser fazer isso.
Um exemplo desse ambiente é o Homebrew, que por exemplo possui o GNU sed
entre outras coisas. Depois de instalar o Homebrew, você pode digitar
brew install coreutils
e instale o GNU Coreutils . Estes irão fornecer-lhe sed
, date
, printf
, wc
e muitas outras ferramentas que vêm com o GNU / Linux, mas não OS X. No entanto, de modo a não "substituição" binários OS padrão X, eles serão prefixados com g
por padrão. Então, depois de instalar o Coreutils, se você quiser usar o GNU sed, digite
gsed
Se isso é muito complicado de digitar toda vez, você pode adicionar um diretório "gnubin" ao seu PATH e apenas chamar o GNU sed com sed
. Você precisará adicionar o seguinte ao seu ~/.bash_profile
:
PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
Obviamente, se você precisar de um ambiente Linux, de sopa a nozes (kernel, X11, compatibilidade com syscall, etc.), precisará executar o Linux em uma máquina virtual, como o VirtualBox . Essa é uma aposta segura se você precisar executar software ou scripts projetados para serem executados no Linux.
O Homebrew só oferece compatibilidade com certas classes de programas que não exigem comportamento específico do Linux. Por exemplo, inotify
está disponível apenas no Linux. drm
(o Direct Rendering Manager) está disponível apenas no Linux. Existem outras chamadas de sistema de nível inferior disponíveis apenas no Linux e para as quais não existe equivalente no OS X, portanto, a portabilidade de determinados programas do Linux para o OS X pode ser impraticável ou impossível sem alterações significativas no código.