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. gcat
Dla cat
). Nie jest dobrym pomysłem zamiana rdzeni MacOS na jądra GNU.
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 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ć date
zamiast gdate
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.
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 w proc
skrypcie bash na komputerze Mac może być trudne .
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.
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.