Bash di Linux vs Mac OS


27

Saya membeli iMac. Saya telah bekerja di Linux untuk waktu yang lama dan saya melakukan banyak scripting bash. Saya bertanya-tanya apakah semua perintah dan fitur bash tersedia di Mac OS? Adakah yang punya pengalaman dengan scripting Mac bash? Saya menghargai masukan Anda.

Jawaban:


32

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 gcatuntuk cat). Bukan ide yang baik untuk mengganti coreutils MacOS dengan coreutils GNU.


6
Harus diperkuat bahwa menggunakan utilitas inti berbasis FreeBSD standar dapat mempengaruhi portabilitas skrip Anda (misalnya, psmemiliki flag yang berbeda, seperti halnya grep). Saya telah membenturkan kepala ke dinding beberapa kali mencoba mencari tahu mengapa skrip Ubuntu saya tidak menghasilkan output yang sama pada Mac saya.
Chris Gregg

1
Jika Anda ingin menulis skrip Anda menjadi portable, www2.opengroup.org/ogsys/jsp/publications/mainPage.jsp adalah tempat yang bagus untuk mendapatkan spesifikasi standar ketat untuk utilitas dan perintah POSIX dan XCU.
kojiro

@ ChrisGregg: Saya setuju. Saya telah menambahkan sedikit jawaban saya untuk penekanan bahwa ada ketidakcocokan antara dua set alat.

5

Jika itu penting, bashpada 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, bashadalah 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.


2
4 tahun kemudian bash di High Sierra masih menggunakan: GNU bash, versi 3.2.57 (1) -release (x86_64-apple-darwin17) Hak Cipta (C) 2007 Free Software Foundation, Inc.
Nate Lockwood

4

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, datebukan gdatemisalnya, sehingga Anda masih dapat menggunakan skrip bash Linux Anda tanpa modifikasi apa pun.

Selamat, Anda baru saja menyelesaikan 99% masalah skrip lintas platform.


3
Di sisi lain, jika skrip Anda sebenarnya dimaksudkan untuk portabel, Anda harus memperbaiki skrip, bukan gejalanya.
tripleee

2

Satu hal yang membuat frustrasi datang dari Linux ke Mac adalah bahwa tidak ada /procsistem 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 procskrip bash Mac Anda.


0

Saya pengguna 'terutama linux, mac sesekali' dan saya menemukan bahwa:

bash, ~/.bashrcdan ~/.bash_aliasessebagian 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 .bashrcfile saya . Itu saya bisa menguji 'jendela baru' dan menemukan kesalahan dalam satu yang masih masuk.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.