Antworten:
Bash selbst wird meistens gleich sein. Es wird ein paar kleine Unterschiede geben , von denen jedoch keiner die Portabilität Ihrer Skripte beeinträchtigt.
Das Hauptproblem ist, dass die MacOS-Coreutils auf FreeBSD basieren, während die Dienstprogramme, die Sie gewohnt sind, höchstwahrscheinlich aus dem GNU-Projekt stammen. Die FreeBSD-Coreutils sind nicht immer mit den GNU-Coreutils kompatibel. Es gibt Leistungs- und Verhaltensunterschiede zwischen den GNU- und FreeBSD-Versionen von sed , grep , ps und anderen Dienstprogrammen .
Sie können die GNU-Coreutils installieren, sie haben jedoch g-
Präfixe (z . B. gcat
für cat
). Es ist keine gute Idee , die MacOS-Coreutils durch die GNU-Coreutils zu ersetzen.
Wenn es darauf ankommt, ist bash
unter Mac OS X Mountain Lion noch Version 3.2. Die meisten Linux-Distributionen werden heutzutage mit 4.x ausgeliefert, sodass Ihnen die Funktionen von Version 4 fehlen. Gegenwärtig ist Version 4.2.45 von Homebrew verfügbar, um dieses Problem zu umgehen. Ich weiß nicht, welche Version in Mavericks ist, ich bin nicht sicher, ob jemand, der es weiß, es noch sagen darf.
Wie von anderen erwähnt, bash
ist es dasselbe bash
(mit Ausnahme der bereits erwähnten Versionen), aber Mac OS X verwendet ein (meistens) BSD-Benutzerland. Viele der Standard-Systemdienstprogramme haben geringfügig unterschiedliche Optionen oder verhalten sich geringfügig anders. Sie sind leider zu zahlreich, um sie hier aufzulisten.
Installiere homebrew (einen Paketmanager) und installiere dann die Gnu-Versionen einiger grundlegender Dienstprogramme:
$ brew install coreutils
$ brew install gnu-sed
Nach jeder Installation werden die Schritte angezeigt, die Sie ausführen können, damit Sie date
statt gdate
beispielsweise einfach aufrufen können , damit Sie Ihre Linux-Bash-Skripte weiterhin ohne Änderungen verwenden können.
Glückwunsch, Sie haben gerade 99% Ihrer plattformübergreifenden Skriptprobleme gelöst.
Eine Sache, die frustrierend sein kann, wenn man von Linux auf einen Mac kommt, ist, dass es kein /proc
Pseudo-Dateisystem gibt. Dies hat eine Reihe meiner Linux-Skripte beschädigt, und es kann schwierig sein, geeignete Methoden zu finden, um dieselben Informationen wie proc
in Ihrem Mac-Bash-Skript zu erhalten.
Ich bin ein "hauptsächlich Linux, gelegentlicher Mac" -Nutzer und finde Folgendes:
bash, ~/.bashrc
und ~/.bash_aliases
meist gleich arbeiten.
Ein Problem, das ich festgestellt habe, war, dass einer der Befehle zum Ändern der Farbaufforderung auf dem Mac nicht funktioniert hat. Aufgrund dieser und anderer Erfahrungen habe ich gelernt, ein Terminalfenster offen zu halten und mich beim Einrichten meiner .bashrc
Datei anzumelden. Das war ich kann 'neues fenster' testen und eventuelle fehler im noch eingeloggten finden.
ps
unterschiedliche Flags, wie dies der Fall istgrep
). Ich habe ein paarmal meinen Kopf gegen die Wand gestoßen, um herauszufinden, warum mein Ubuntu-Skript auf meinem Mac nicht die gleiche Ausgabe lieferte.