Dans le cas général, vous ne pouvez pas (ou ne devriez pas ) remplacer les commandes par défaut. La raison en est que de nombreux scripts d'administration système et des packages tiers s'appuient probablement sur ces commandes pour se comporter comme ils le font immédiatement sous Mac X.
Donc, si vous supprimez simplement les commandes système et les remplacez par des équivalents GNU ayant un comportement ou des arguments de ligne de commande incompatibles, cela cassera probablement quelque chose. Surtout si vous utilisez des logiciels "portés" sur Mac OS X après avoir été conçus à l'origine pour Linux ou BSD, car ces types de programmes sont plus susceptibles de s'appuyer sur des scripts shell et des commandes système plutôt que d'appeler des API OS X.
Ce que vous pouvez faire est d'installer un environnement qui installe les utilitaires GNU dans un autre répertoire sans remplacer les valeurs par défaut, puis d' ajuster votre PATH
variable d'environnement afin qu'elle donne la priorité aux commandes trouvées dans le répertoire GNU avant même d'effectuer une recherche dans les répertoires système. Vous pouvez câbler cela pour qu'il ne définisse votre PATH de cette façon que si vous démarrez un shell interactif; vous pouvez google comment faire cela bash
ou poser une autre question sur SU (ou la rechercher, car on vous l'a probablement déjà demandé) si vous voulez le faire.
Un exemple d'un tel environnement est Homebrew qui, par exemple, utilise GNU sed
entre autres. Une fois que vous avez installé Homebrew, vous pouvez taper
brew install coreutils
et installez GNU Coreutils . Ceux - ci vous fournira sed
, date
, printf
, wc
et bien d' autres outils livrés avec GNU / Linux, mais pas OS X. Cependant, pour ne pas par défaut « outrepasser » OS X binaires, ils seront préfixées avec g
par défaut. Donc, après avoir installé Coreutils, si vous voulez utiliser GNU sed, tapez
gsed
Si c'est trop compliqué à taper à chaque fois, vous pouvez ajouter un répertoire "gnubin" à votre PATH et simplement appeler GNU sed avec sed
. Vous devrez ajouter ce qui suit à votre ~/.bash_profile
:
PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
Bien sûr, si vous avez besoin d’un environnement Linux complet (noyau, X11, compatibilité système, etc.), vous devrez exécuter Linux sur une machine virtuelle, telle que VirtualBox. . C’est une valeur sûre si vous devez exécuter un logiciel ou des scripts conçus pour Linux.
Homebrew ne vous permettra la compatibilité que pour certaines classes de programmes ne nécessitant pas de comportement spécifique à Linux. Par exemple, inotify
n'est disponible que sous Linux. drm
(Direct Rendering Manager) n’est disponible que sous Linux. Il existe certains autres appels système de bas niveau qui ne sont disponibles que sous Linux et pour lesquels aucun équivalent n'existe sous OS X; par conséquent, le portage de certains programmes de Linux vers OS X peut s'avérer peu pratique ou impossible sans modifications majeures du code.