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. gcat
Dla cat
). Nie jest dobrym pomysłem zamiana rdzeni MacOS na jądra GNU.
ps
Ma 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.Jeśli to ważne,
bash
w 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,
bash
jest to samobash
(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ć.źródło
Zainstaluj homebrew (menedżer pakietów), a następnie zainstaluj wersje GNU niektórych podstawowych narzędzi:
Po każdej instalacji pokaże kroki, które możesz wykonać, abyś mógł po prostu zadzwonić
date
zamiastgdate
na 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.
źródło
Jedną z rzeczy, które mogą frustrować przejście z Linuksa na komputer Mac, jest brak
/proc
pseudo-systemu plików. To zepsuło wiele moich skryptów Linuksa i znalezienie odpowiedniego sposobu na umieszczenie tych samych informacji wproc
skrypcie bash na komputerze Mac może być trudne .źródło
Jestem „głównie Linuksem, sporadycznie użytkownikiem Maca” i stwierdzam, że:
bash
~/.bashrc
i~/.bash_aliases
przeważ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
.bashrc
pliku. To znaczy, że mogę przetestować „nowe okno” i znaleźć błędy w wciąż zalogowanym w jednym.źródło