Genel durumda, varsayılan komutların hiçbirini değiştiremezsiniz (veya etmemelisiniz ). Bunun nedeni, birçok sistem yönetimi betiğinin ve üçüncü taraf paketlerinin, OS X üzerindeki kutusundan çıkardıkları gibi davranması için muhtemelen bu komutlara dayanmasıdır.
Bu nedenle, sadece sistem komutlarını silerseniz ve onları uyumsuz davranış veya komut satırı argümanlarına sahip GNU eşdeğerleriyle değiştirirseniz, muhtemelen bir şeyleri kırar. Özellikle, Linux veya BSD'de çalışacak şekilde tasarlandıktan sonra Mac OS X'e "taşınmış" bir yazılım kullanıyorsanız, bu tür programların OS X API'lerini çağırmanın aksine kabuk komut dosyalarına ve sistem komutlarına daha fazla güvenmesi daha olasıdır.
Ne yapabilirsiniz yapmak daha sonra varsayılan üzerine yazmadan başka dizinde GNU araçları yükler bir ortam yükleyin ve bir senin ayarlamak PATH
ortam değişkeni komutları bile sistem dizinleri arar önce GNU dizin içindeki üzere bu öncelik verir, böylece. Bunu, etkileşimli bir kabuk başlatıyorsanız PATH'inizi yalnızca bu şekilde ayarlaması için bağlayabilirsiniz; Bunu yapmak için Google’la bunun nasıl yapılacağını bash
veya SU hakkında başka bir soru sorabilir (veya daha önce sorulmuş olduğundan, onu arayabilirsiniz).
Böyle bir ortamın bir örneği, örneğin başka şeylerin yanı sıra GNU olan Homebrew'tirsed
. Homebrew'u yükledikten sonra yazabilirsiniz
brew install coreutils
ve GNU Coreutils'i kurun . Bunlar sağlayacaktır sed
, date
, printf
, wc
ve birçok diğer araçlar şekilde değil "geçersiz kılma" varsayılan OS X binarylerine Ancak GNU / Linux, ancak OS X ile gemi, yani onlar öneki getirilecek g
varsayılan olarak. Yani, Coreutils'i kurduktan sonra, GNU sed kullanmak istiyorsanız,
gsed
Bu, her zaman yazmak için çok fazla güçlük varsa, PATH'inize bir "gnubin" dizini ekleyebilir ve GNU sed ile sadece çağırabilirsiniz sed
. Aşağıdakileri kendinize eklemeniz gerekir ~/.bash_profile
:
PATH="$(brew --prefix coreutils)/libexec/gnubin:$PATH"
Tabii ki, çorbadan kuruyemişlere kadar bir Linux ortamına ihtiyacınız varsa (çekirdek, X11, sistem uyumluluğu vb.), Linux'u VirtualBox gibi bir sanal makinede çalıştırmanız gerekir . Linux'ta çalışacak şekilde tasarlanmış yazılım veya komut dosyalarını çalıştırmanız gerekirse, bu güvenli bir bahistir.
Homebrew, yalnızca Linux'a özgü davranış gerektirmeyen belirli program sınıfları için uyumluluk sağlar. Örneğin inotify
, yalnızca Linux'ta kullanılabilir. drm
(Doğrudan İşleme Yöneticisi) yalnızca Linux'ta kullanılabilir. Yalnızca Linux'ta kullanılabilen ve OS X'de eşdeğeri olmayan başka bir düşük seviye sistem çağrısı vardır, bu nedenle belirli programları Linux'tan OS X'e taşımak, önemli kod değişiklikleri olmadan pratik veya imkansız olabilir.