Dalam kasus umum, Anda tidak dapat (atau tidak seharusnya ) mengganti perintah default sama sekali. Alasannya adalah bahwa banyak skrip administrasi sistem dan paket pihak ketiga mungkin mengandalkan perintah ini untuk berperilaku seperti yang mereka lakukan di luar kotak pada OS X.
Jadi, jika Anda hanya menghapus perintah sistem dan menggantinya dengan setara GNU yang memiliki perilaku yang tidak kompatibel atau argumen baris perintah, itu mungkin akan merusak sesuatu. Terutama jika Anda menggunakan beberapa perangkat lunak yang "porting" ke Mac OS X setelah awalnya dirancang untuk berjalan di Linux atau BSD, karena jenis program ini lebih cenderung bergantung pada skrip shell dan perintah sistem daripada memanggil OS X API.
Yang dapat Anda lakukan adalah menginstal lingkungan yang menginstal utilitas GNU di direktori lain tanpa menimpa default, dan kemudian menyesuaikan PATH
variabel lingkungan Anda sehingga memberikan prioritas pada perintah yang ditemukan dalam direktori GNU sebelum bahkan mencari direktori sistem. Anda bisa memasang ini sehingga hanya mengatur PATH Anda seperti itu jika Anda memulai shell interaktif; Anda dapat google cara melakukan ini dengan bash
atau mengajukan pertanyaan lain pada SU (atau mencarinya, karena mungkin pernah ditanyakan sebelumnya) jika Anda ingin melakukannya.
Contoh dari lingkungan semacam itu adalah Homebrew yang misalnya memiliki GNU sed
. Setelah menginstal Homebrew, Anda dapat mengetik
brew install coreutils
dan instal GNU Coreutils . Ini akan memberikan Anda dengan sed
, date
, printf
, wc
dan banyak alat lainnya yang kapal dengan GNU / Linux, tapi tidak OS X. Namun, agar tidak "override" default OS X binari, mereka akan diawali dengan g
secara default. Jadi, setelah menginstal Coreutils, jika Anda ingin menggunakan GNU, ketikkan
gsed
Jika ini terlalu merepotkan untuk diketik setiap saat, Anda dapat menambahkan direktori "gnubin" ke PATH Anda dan cukup panggil GNU dengan sed
. Anda harus menambahkan yang berikut ini ke ~/.bash_profile
:
PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
Tentu saja, jika Anda memerlukan lingkungan Linux dari sup ke kacang (kernel, X11, kompatibilitas syscall, dll) Anda harus menjalankan Linux di mesin virtual, seperti VirtualBox . Ini adalah taruhan yang aman jika Anda perlu menjalankan perangkat lunak atau skrip yang dirancang untuk berjalan di Linux.
Homebrew hanya akan memberi Anda kompatibilitas untuk kelas program tertentu yang tidak memerlukan perilaku spesifik Linux. Misalnya inotify
hanya tersedia di Linux. drm
(Direct Rendering Manager) hanya tersedia di Linux. Ada beberapa panggilan sistem tingkat rendah yang hanya tersedia di Linux, dan yang tidak ada padanannya pada OS X, jadi memindahkan program-program tertentu dari Linux ke OS X dapat menjadi tidak praktis atau tidak mungkin tanpa perubahan kode yang signifikan.