Im Allgemeinen können (oder sollten ) Sie die Standardbefehle überhaupt nicht ersetzen. Der Grund dafür ist, dass viele Systemverwaltungsskripte und Pakete von Drittanbietern wahrscheinlich auf diese Befehle angewiesen sind, um sich so zu verhalten, wie sie es von Anfang an unter OS X tun.
Wenn Sie also nur die Systembefehle löschen und durch GNU-Äquivalente mit inkompatiblem Verhalten oder Befehlszeilenargumenten ersetzen, wird dies wahrscheinlich zu Problemen führen. Insbesondere, wenn Sie eine Software verwenden, die nach dem ursprünglichen Entwurf für Linux oder BSD auf Mac OS X "portiert" wurde, da diese Arten von Programmen eher auf Shell-Skripten und Systembefehlen beruhen als auf dem Aufrufen von OS X-APIs.
Sie können eine Umgebung installieren, in der die GNU-Dienstprogramme in einem anderen Verzeichnis installiert werden, ohne die Standardeinstellungen zu überschreiben, und dann Ihre PATH
Umgebungsvariable so anpassen , dass sie den Befehlen im GNU-Verzeichnis Vorrang einräumt, bevor sie überhaupt die Systemverzeichnisse durchsucht. Sie können dies so verkabeln, dass Ihr PFAD nur dann auf diese Weise festgelegt wird, wenn Sie eine interaktive Shell starten. Sie können googeln, wie man das macht, bash
oder eine andere Frage zu SU stellen (oder danach suchen, da sie wahrscheinlich schon einmal gestellt wurde), wenn Sie das möchten.
Ein Beispiel für eine solche Umgebung ist Homebrew, das zum Beispiel sed
unter anderem GNU hat . Sobald Sie Homebrew installiert haben, können Sie eingeben
brew install coreutils
und installiere die GNU Coreutils . Dies wird Ihnen mit sed
, date
, printf
, wc
und viele andere Tools , dass Schiff mit GNU / Linux, aber nicht OS X. Allerdings, um nicht zu „überschreiben“ default OS X Binärdateien, werden sie mit dem Präfix werden g
standardmäßig aktiviert . Wenn Sie also nach der Installation von Coreutils GNU sed verwenden möchten, geben Sie Folgendes ein
gsed
Wenn dies zu umständlich ist, können Sie Ihrem PATH ein "gnubin" -Verzeichnis hinzufügen und GNU sed mit aufrufen sed
. Sie müssen Folgendes zu Ihrer hinzufügen ~/.bash_profile
:
PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
Wenn Sie eine Linux-Umgebung benötigen, die von Suppe bis Nuts reicht (Kernel, X11, Syscall-Kompatibilität usw.), müssen Sie Linux auf einer virtuellen Maschine wie VirtualBox ausführen . Dies ist eine sichere Sache, wenn Sie Software oder Skripte ausführen müssen, die für Linux entwickelt wurden.
Homebrew bietet Kompatibilität nur für bestimmte Programmklassen, für die kein Linux-spezifisches Verhalten erforderlich ist. Zum Beispiel inotify
ist nur unter Linux verfügbar. drm
(der Direct Rendering Manager) ist nur unter Linux verfügbar. Es gibt einige andere eher einfache Systemaufrufe, die nur unter Linux verfügbar sind und für die es unter OS X kein Äquivalent gibt. Daher kann das Portieren bestimmter Programme von Linux nach OS X ohne wesentliche Codeänderungen unpraktisch oder unmöglich sein.