Risposte:
Bash stesso sarà per lo più lo stesso. Ci saranno alcune piccole differenze, ma nessuna di queste influenzerà la portabilità dei tuoi script.
Il problema principale è che i coreutils di MacOS sono basati su FreeBSD mentre le utility a cui sei abituato sono molto probabilmente dal progetto GNU. I coreutils di FreeBSD non sono sempre compatibili con i coreutils di GNU. Esistono differenze comportamentali e comportamentali tra le versioni GNU e FreeBSD di sed , grep , ps e altre utility .
È possibile installare i coreutils GNU ma hanno g-
prefissi (ad es. gcat
Per cat
). Non è una buona idea sostituire i coreutils di MacOS con i coreutils GNU.
Se è importante, bash
su Mac OS X Mountain Lion è ancora la versione 3.2. La maggior parte delle distribuzioni di Linux in questi giorni viene distribuita con 4.x quindi ti mancheranno le funzionalità della versione 4. Attualmente, la versione 4.2.45 è disponibile da Homebrew come soluzione alternativa. Non so quale sia la versione di Mavericks, non sono sicuro che qualcuno che lo sappia sia ancora autorizzato a dirlo.
Come menzionato da altri, bash
è lo stesso bash
(a parte le versioni già note) ma Mac OS X utilizza una (principalmente) area utente BSD. Molte delle utility di sistema standard hanno opzioni leggermente diverse o si comportano in modo leggermente diverso. Sfortunatamente sono troppo numerosi per essere elencati qui.
Installa homebrew (un gestore di pacchetti), quindi installa le versioni gnu di alcune utility di base:
$ brew install coreutils
$ brew install gnu-sed
Dopo ogni installazione, mostrerà i passaggi che è possibile seguire in modo da poter semplicemente chiamare date
anziché gdate
ad esempio, in modo da poter utilizzare gli script bash di Linux senza alcuna modifica.
Congratulazioni, hai appena risolto il 99% dei tuoi problemi di scripting multipiattaforma.
Una cosa che può essere frustrante venire da Linux a un Mac è che non esiste un /proc
pseudo-file system. Questo ha interrotto un certo numero dei miei script Linux e può essere complicato trovare modi adatti per ottenere le stesse informazioni che trovi nello proc
script bash del tuo Mac.
Sono un utente 'principalmente Linux, Mac occasionale' e trovo che:
bash, ~/.bashrc
e per ~/.bash_aliases
lo più funzionano allo stesso modo.
Un problema che ho riscontrato è stato uno dei comandi per modificare il prompt dei colori non funzionava sul Mac. Da quella e altre esperienze ho imparato a tenere aperta una finestra di terminale e ad aver effettuato l'accesso durante l'impostazione del mio .bashrc
file. Quello è stato che posso testare 'nuova finestra' e trovare eventuali errori nel ancora registrato in uno.
ps
ha flag diversi, come fagrep
). Ho sbattuto la testa contro il muro un paio di volte cercando di capire perché il mio script Ubuntu non stava producendo lo stesso output sul mio Mac.