Odpowiedzi:
Sam Bash będzie w większości taki sam. Będzie kilka drobnych różnic, ale żadna z nich nie wpłynie na przenośność twoich skryptów.
Głównym problemem jest to, że jądra systemu MacOS są oparte na FreeBSD, podczas gdy narzędzia, do których jesteś przyzwyczajony, pochodzą najprawdopodobniej z projektu GNU. Coreutils FreeBSD nie zawsze są kompatybilne z coreutils GNU. Istnieją różnice w wydajności i zachowaniu między wersjami GNU i FreeBSD programów sed , grep , ps i innych .
Możesz zainstalować jądra GNU, ale mają one g-prefiksy (np. gcatDla cat). Nie jest dobrym pomysłem zamiana rdzeni MacOS na jądra GNU.
Jeśli to ważne, bashw systemie Mac OS X Mountain Lion jest nadal w wersji 3.2. Większość dystrybucji Linuksa jest obecnie dostarczana z wersją 4.x, więc nie będziesz mieć funkcji wersji 4. Obecnie wersja 4.2.45 jest dostępna w Homebrew jako obejście problemu. Nie wiem, która wersja jest w Mavericks, nie jestem pewien, czy ktoś, kto wie, może jeszcze powiedzieć.
Jak wspomniano przez innych, bashjest to samo bash(inne niż już wspomniane wersje), ale Mac OS X używa (głównie) przestrzeni użytkownika BSD. Wiele standardowych narzędzi systemowych ma nieco inne opcje lub zachowuje się nieco inaczej. Są niestety zbyt liczne, by je tutaj wymienić.
Zainstaluj homebrew (menedżer pakietów), a następnie zainstaluj wersje GNU niektórych podstawowych narzędzi:
$ brew install coreutils
$ brew install gnu-sed
Po każdej instalacji pokaże kroki, które możesz wykonać, abyś mógł po prostu zadzwonić datezamiast gdatena przykład, abyś mógł nadal używać skryptów bash dla Linuksa bez żadnych modyfikacji.
Gratulacje, właśnie rozwiązałeś 99% problemów ze skryptami na różnych platformach.
Jedną z rzeczy, które mogą frustrować przejście z Linuksa na komputer Mac, jest brak /procpseudo-systemu plików. To zepsuło wiele moich skryptów Linuksa i znalezienie odpowiedniego sposobu na umieszczenie tych samych informacji w procskrypcie bash na komputerze Mac może być trudne .
Jestem „głównie Linuksem, sporadycznie użytkownikiem Maca” i stwierdzam, że:
bash ~/.bashrci ~/.bash_aliasesprzeważnie działają tak samo.
Jednym z problemów, które znalazłem, było jedno z poleceń zmiany koloru, które nie działało na komputerze Mac. Na podstawie tych i innych doświadczeń nauczyłem się, aby okno terminalu było otwarte i zalogowane podczas konfigurowania mojego .bashrcpliku. To znaczy, że mogę przetestować „nowe okno” i znaleźć błędy w wciąż zalogowanym w jednym.
psMa różne flagi, jak to robigrep). Kilka razy uderzyłem się głową w ścianę, próbując dowiedzieć się, dlaczego mój skrypt Ubuntu nie generował tego samego wyniku na moim komputerze Mac.