W ogólnym przypadku nie można (lub nie należy ) zastępować domyślnych poleceń. Powodem jest to, że wiele skryptów administracyjnych systemu i pakietów firm trzecich prawdopodobnie polega na tych poleceniach, aby zachowywać się tak, jak działają po wyjęciu z pudełka w systemie OS X.
Więc jeśli po prostu wyczyścisz polecenia systemowe i zastąpisz je odpowiednikami GNU, które mają niezgodne zachowanie lub argumenty wiersza poleceń, prawdopodobnie coś zepsuje. Zwłaszcza jeśli korzystasz z oprogramowania, które zostało „przeniesione” do Mac OS X po tym, jak pierwotnie zostało zaprojektowane do pracy w systemie Linux lub BSD, ponieważ tego rodzaju programy częściej polegają na skryptach powłoki i poleceniach systemowych niż na wywoływaniu API OS X.
To, co możesz zrobić, to zainstalować środowisko, które instaluje narzędzia GNU w innym katalogu bez nadpisywania wartości domyślnych, a następnie dostosuj PATH
zmienną środowiskową, aby dawała pierwszeństwo poleceniom znajdującym się w katalogu GNU, zanim przeszuka katalogi systemowe. Możesz to załączyć tak, aby ustawiało w ten sposób PATH tylko wtedy, gdy uruchamiasz interaktywną powłokę; możesz google, jak to zrobić, bash
lub zadać inne pytanie na SU (lub poszukać go, ponieważ prawdopodobnie zostało to wcześniej zadane), jeśli chcesz to zrobić.
Przykładem takiego środowiska jest Homebrew, który na przykład ma GNU sed
między innymi. Po zainstalowaniu Homebrew możesz pisać
brew install coreutils
i zainstaluj GNU Coreutils . Będą one zapewnić Państwu sed
, date
, printf
, wc
oraz wiele innych narzędzi, które są dostarczane z systemu GNU / Linux, lecz nie OS X. Jednak, tak aby nie „Zastąp” default OS X binaria, będą one prefiksem g
domyślnie. Więc po zainstalowaniu Coreutils, jeśli chcesz używać GNU sed, wpisz
gsed
Jeśli jest to zbyt kłopotliwe do wpisywania za każdym razem, możesz dodać katalog „gnubin” do PATH i po prostu wywołać GNU sed sed
. Musisz dodać do swojego ~/.bash_profile
:
PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
Oczywiście, jeśli potrzebujesz środowiska Linux od zupy do orzechów (jądro, X11, kompatybilność syscall itp.), Będziesz musiał uruchomić Linuksa na maszynie wirtualnej, takiej jak VirtualBox . Jest to bezpieczny zakład, jeśli potrzebujesz uruchomić oprogramowanie lub skrypty zaprojektowane do działania w systemie Linux.
Homebrew zapewni kompatybilność tylko dla niektórych klas programów, które nie wymagają zachowania specyficznego dla Linuksa. Na przykład inotify
jest dostępny tylko w systemie Linux. drm
(Direct Rendering Manager) jest dostępny tylko w systemie Linux. Istnieją również inne raczej systemowe wywołania systemowe, które są dostępne tylko w systemie Linux i dla których nie istnieje odpowiednik w systemie OS X, więc przenoszenie niektórych programów z systemu Linux na system OS X może być niepraktyczne lub niemożliwe bez znacznych zmian w kodzie.