Bash lui-même sera essentiellement le même. Il y aura quelques petites différences, mais aucune d'entre elles n'affectera la portabilité de vos scripts.
Le problème majeur est que les coreutils MacOS sont basés sur FreeBSD alors que les utilitaires auxquels vous êtes habitués sont très probablement issus du projet GNU. Les coreutils FreeBSD ne sont pas toujours compatibles avec les coreutils GNU. Il existe des différences de performances et de comportement entre les versions GNU et FreeBSD de sed , grep , ps et d' autres utilitaires .
Vous pouvez installer les coreutils GNU mais ils ont des g-
préfixes (par exemple gcat
pour cat
). Ce n'est pas une bonne idée de remplacer les coreutils MacOS par les coreutils GNU.
ps
a des indicateurs différents, tout commegrep
). Je me suis cogné la tête contre le mur plusieurs fois en essayant de comprendre pourquoi mon script Ubuntu ne produisait pas la même sortie sur mon Mac.Si cela est important,
bash
sur Mac OS X Mountain Lion est toujours la version 3.2. La plupart des distributions Linux de nos jours sont livrées avec 4.x, vous manquerez donc de fonctionnalités de la version 4. À l'heure actuelle, la version 4.2.45 est disponible à partir de Homebrew comme solution de contournement. Je ne sais pas quelle version est dans Mavericks, je ne suis pas sûr que quiconque le sache soit encore autorisé à le dire.Comme mentionné par d'autres,
bash
c'est la même chosebash
(autre que les versions déjà notées) mais Mac OS X utilise (principalement) un espace utilisateur BSD. De nombreux utilitaires système standard ont des options légèrement différentes ou se comportent légèrement différemment. Ils sont malheureusement trop nombreux pour être listés ici.la source
Installez homebrew (un gestionnaire de paquets) puis installez les versions gnu de certains utilitaires de base:
Après chaque installation, il montrera les étapes que vous pouvez suivre pour pouvoir simplement appeler
date
au lieu degdate
par exemple, afin que vous puissiez toujours utiliser vos scripts bash Linux sans aucune modification.Félicitations, vous venez de résoudre 99% de vos problèmes de script multiplateforme.
la source
Une chose qui peut être frustrante venant de Linux vers un Mac, c'est qu'il n'y a pas de
/proc
pseudo-système de fichiers. Cela a cassé un certain nombre de mes scripts Linux, et il peut être difficile de trouver des moyens appropriés pour obtenir les mêmes informations que vous trouvezproc
dans votre script bash Mac.la source
Je suis un utilisateur 'principalement Linux, occasionnel mac' et je trouve que:
bash,
~/.bashrc
et~/.bash_aliases
fonctionnent généralement de la même manière.Un problème que j'ai trouvé était que l'une des commandes pour changer l'invite de couleur ne fonctionnait pas sur le Mac. À partir de cela et d'autres expériences, j'ai appris à garder une fenêtre de terminal ouverte et connectée lors de la configuration de mon
.bashrc
fichier. C'est-à-dire que je peux tester une nouvelle fenêtre et trouver des erreurs dans celle qui est toujours connectée.la source