Tenho observado que muitas vezes há diferenças sutis e irritantes entre as versões padrão de certas ferramentas de linha de comando, como paste
e sed
nas distribuições modernas do Linux versus OSX
. Isto leva arespostasque não funcionam, OS X
embora funcionem em quase todas as distribuições Linux.
Então eu me pergunto, existe uma maneira padrão de obter o conjunto completo de OS X
versões das ferramentas Unix padrão em distribuições Linux modernas para que possamos testar soluções para funcionalidade correta no OSX, sem ter uma cópia?
Responder1
Conforme mencionado em um comentário, a Apple faz oCódigo fontede suas versões dessas ferramentas disponíveis. Muitos comandos comuns estão nopacote "shell_cmds", enquanto paste e sed estão em "texto_cmds". Você pode obter o código-fonte e compilar.
Praticamente todos eles funcionam bem em sistemas Linux, embora muitas vezes você tenha que ir até o código-fonte e remover explicitamente os testes específicos do FreeBSD, particularmente a __FBSDID("...");
linha que está em quase todos os arquivos. Não conheço nenhuma distribuição que empacote isso. Muitas distribuições empacotam versões BSD de algumas ferramentas comuns, que são muito próximas (muitas vezes idênticas) das versões do OS X, embora geralmente não incluam coisas como paste e sed. Por exemplo, o Debian incluioito pacotes chamadosbsdX
(nenhum dos quais possui nenhum desses comandos). Especificamente para as versões da Apple, ou para as muitas ferramentas que não estão incluídas nelas, elas não são difíceis de construir quando você precisa delas com base nas instruções acima.
Dito isso, o subconjunto comum das ferramentas GNU e BSD é oEspecificação POSIX, onde todos os comandos básicos são definidos. Você pode procurar ocomando colarousede veja quais argumentos ele certamente aceitará em todos os lugares. Esta é a maneira "moralmente correta" de escrever código portátil: tanto as ferramentas GNU quanto as ferramentas BSD possuem extensões, mas se você permanecer no POSIX seu código funcionará em ambas. Entãoverifique se você está sempre usando apenas argumentos POSIXe então o que você diz deve funcionar igualmente no OS X e em outros sistemas.
Responder2
Enquanto a maioriaferramentas unixy do OSX são de código aberto, o código-fonte de muitas ferramentas depende de recursos de biblioteca e kernel que não estão presentes no Linux (e que não são de código aberto e que não podem ser executados em hardware que não seja da Apple sem esforço extra e talvez violações de licença). Duvido que você consiga executá-los no Linux sem um esforço significativo.
A camada unix do OSX é portada deFreeBSDe muitos programas são muito semelhantes ao da versão FreeBSD que era atual na época do lançamento do OSX. Você pode executar o FreeBSD em uma máquina virtual e testar coisas lá. Você também pode correrOpenBSD; O OpenBSD é focado em segurança e muito mais conservador que o FreeBSD quando se trata de adotar novos recursos. Se quiser testar a portabilidade dos scripts, você também pode instalarOpenIndiana, que é um fork de código aberto doSolarisbaseado na edição OpenSolaris agora descontinuada. Como o Solaris éSistema V, Solaris mais OpenBSD oferece uma visão razoavelmente ampla da portabilidade do Unix.
Você também pode verificar a documentação de muitas variantes do Unix online: