Linux'ta Bash ve Mac OS'ta


27

Bir iMac alıyorum. Uzun zamandır Linux üzerinde çalışıyorum ve bir grup bash betiği yapıyorum. Mac OS'de tüm bash komutlarının ve özelliklerinin mevcut olup olmadığını merak ediyordum. Mac bash komut dosyası ile ilgili herhangi bir deneyimi olan var mı? Girişinizi takdir ediyorum.

Yanıtlar:


32

Bash'in kendisi çoğunlukla aynı olacak. Birkaç küçük fark olacaktır ancak bunların hiçbiri komut dosyalarınızın taşınabilirliğini etkilemeyecektir.

Asıl sorun, MacOS coreutils'in FreeBSD tabanlı olmasıdır, ancak kullandığınız yardımcı programlar GNU projesinden kaynaklanmaktadır. FreeBSD çekirdek bileşenleri her zaman GNU çekirdek öğeleriyle uyumlu değildir. Sed , grep , ps ve diğer hizmetlerin GNU ve FreeBSD versiyonları arasında performans ve davranış farklılıkları vardır .

GNU coreutils'i yükleyebilirsiniz ancak g-önekleri vardır (ör. gcatFor cat). Bu var iyi bir fikir değil , GNU coreutils ile MacOS coreutils yerine.


6
Standart FreeBSD tabanlı çekirdek yardımcı programlarını kullanarak o güçlendirilmiş edilmelidir olabilir (örneğin, komut dosyalarınızın taşınabilirliği etkileyen psolarak yapar, farklı bayraklar vardır grep). Ubuntu betiğimin neden Mac'te aynı çıktıyı üretmediğini anlamaya çalışırken kafamı duvara çarptım.
Chris Gregg

1
Komut dosyalarınızı taşınabilir olarak yazmak istiyorsanız, www2.opengroup.org/ogsys/jsp/publications/mainPage.jsp , POSIX ve XCU yardımcı programları ve komutları için kesinlikle standart özellikleri almak için harika bir yerdir.
kojiro

@ ChrisGregg: Katılıyorum. İki araç seti arasında uyumsuzluk olduğunu vurgulamak için cevabımı biraz ekledim.

5

Önemliyse, bashMac OS X'de Mountain Lion hala 3.2 sürümüdür. Bugünlerde çoğu linux dağıtımı 4.x ile gönderiliyor, bu yüzden sürüm 4 özelliklerini kaçırıyorsunuz. Şu anda, 4.2.45 sürümü Homebrew'den geçici bir çözüm olarak edinilebilir. Mavericks'te hangi versiyonun olduğunu bilmiyorum, henüz kimsenin söyleyebildiğinden emin değilim.

Diğerleri tarafından belirtildiği gibi bash, aynı bash(daha önce belirtilen sürümlerin dışında) aynı, ancak Mac OS X (çoğunlukla) BSD kullanıcısı kullanıyor. Standart sistem yardımcı programlarının çoğu, biraz farklı seçeneklere sahiptir veya biraz farklı davranır. Maalesef burada listelemek için çok fazlalar.


2
4 yıl sonra Yüksek Sierra'da bash hala kullanıyor: GNU bash, sürüm 3.2.57 (1) - yayın (x86_64-apple-darwin17) Telif Hakkı (C) 2007 Özgür Yazılım Vakfı, Inc.
Nate Lockwood

4

Yükleme homebrew sonra bazı temel araçlardan gnu sürümlerini yükleyin (bir paket yöneticisi):

$ brew install coreutils
$ brew install gnu-sed

Her yüklemelerin sonra, sen sadece çağrı böylece takip edebilirsiniz adımları gösterecektir dateyerine gdateyine herhangi bir değişiklik yapmadan Linux bash komut kullanabilirsiniz böylece, mesela.

Tebrikler, platformlar arası komut dosyası çalıştırma sorunlarınızın% 99'unu çözdünüz.


3
Öte yandan, komut dosyalarınız gerçekten taşınabilir olması gerekiyorsa, komut dosyalarını değil de semptomları düzeltmek istersiniz.
üçlü

2

Linux'tan Mac'e gelmek sinir bozucu olabilecek bir şey /procsözde dosya sisteminin olmamasıdır . Bu benim Linux betiklerimin çoğunu kırdı ve procMac bash betiğinizde bulacağınız bilgiyi elde etmenin uygun yollarını bulmak zor olabilir .


0

Ben 'çoğunlukla linux, zaman zaman mac' kullanıcısıyım ve şunu buldum:

bash ~/.bashrcve ~/.bash_aliasesçoğunlukla aynı şekilde çalışır.

Bulduğum bir sorun, renk istemini değiştirme komutunun Mac'te işe yaramadığıydı. Bu ve diğer deneyimlerden, dosyamı oluştururken terminal penceresini açık tutmayı ve giriş yapmayı öğrendim .bashrc. Bu, 'yeni pencereyi' test edebilir ve hala oturum açmış penceredeki hataları bulabilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.