Jawaban:
Bash sendiri sebagian besar akan sama. Akan ada beberapa perbedaan kecil tetapi tidak satupun dari ini akan mempengaruhi portabilitas skrip Anda.
Masalah utama adalah bahwa coreutils MacOS adalah berbasis FreeBSD sedangkan utilitas yang Anda gunakan kemungkinan besar berasal dari proyek GNU. Coreutils FreeBSD tidak selalu kompatibel dengan coreutils GNU. Ada perbedaan kinerja dan perilaku antara versi GNU dan FreeBSD dari sed , grep , ps , dan utilitas lain .
Anda dapat menginstal coreutils GNU tetapi mereka memiliki g-
awalan (misalnya gcat
untuk cat
). Bukan ide yang baik untuk mengganti coreutils MacOS dengan coreutils GNU.
Jika itu penting, bash
pada Mac OS X Mountain Lion masih versi 3.2. Sebagian besar distribusi linux hari ini dikirimkan dengan 4.x sehingga Anda akan kehilangan fitur versi 4. Saat ini, versi 4.2.45 tersedia dari Homebrew sebagai solusi. Saya tidak tahu versi apa yang ada di Mavericks, saya tidak yakin siapa pun yang tahu diizinkan untuk mengatakannya.
Seperti yang disebutkan oleh orang lain, bash
adalah sama bash
(selain versi yang sudah dicatat) tetapi Mac OS X menggunakan (sebagian besar) pengguna BSD. Banyak utilitas sistem standar memiliki opsi yang sedikit berbeda atau berperilaku sedikit berbeda. Sayangnya terlalu banyak untuk disebutkan di sini.
Instal homebrew (manajer paket) kemudian instal versi gnu dari beberapa utilitas dasar:
$ brew install coreutils
$ brew install gnu-sed
Setelah setiap penginstalan, ini akan menunjukkan langkah-langkah yang dapat Anda ikuti sehingga Anda hanya dapat memanggil, date
bukan gdate
misalnya, sehingga Anda masih dapat menggunakan skrip bash Linux Anda tanpa modifikasi apa pun.
Selamat, Anda baru saja menyelesaikan 99% masalah skrip lintas platform.
Satu hal yang membuat frustrasi datang dari Linux ke Mac adalah bahwa tidak ada /proc
sistem file semu. Ini telah merusak sejumlah skrip Linux saya, dan mungkin sulit untuk menemukan cara yang cocok untuk mendapatkan informasi yang sama dengan yang Anda temukan di proc
skrip bash Mac Anda.
Saya pengguna 'terutama linux, mac sesekali' dan saya menemukan bahwa:
bash, ~/.bashrc
dan ~/.bash_aliases
sebagian besar bekerja sama.
Satu masalah yang saya temukan adalah salah satu perintah untuk mengubah prompt warna tidak berfungsi pada Mac. Dari pengalaman itu dan lainnya saya telah belajar untuk menjaga jendela terminal terbuka dan masuk ketika mengatur .bashrc
file saya . Itu saya bisa menguji 'jendela baru' dan menemukan kesalahan dalam satu yang masih masuk.
ps
memiliki flag yang berbeda, seperti halnyagrep
). Saya telah membenturkan kepala ke dinding beberapa kali mencoba mencari tahu mengapa skrip Ubuntu saya tidak menghasilkan output yang sama pada Mac saya.