it-swarm.asia

Mac OS X: İkili dosyaların yaşaması gereken geleneksel yerler

Komut satırı uygulaması olan bir uygulamayı indirdim ve yolu açıkça yazmak zorunda kalmadan komut satırından çalıştırabileceğim bir yere koymak istiyorum.

  1. Böyle bir şey için kullanılan geleneksel yollar nelerdir? /usr/bin? Biri tüm kullanıcılar için, diğeri de yönetici hesabım gibi yalnızca belirli bir kullanıcı için istersem, farklı seçenekler var mı?

  2. Yoksa Uygulamalar dizini altında kendi dizinine koymalı mıyım ve yola ekleyelim mi? Öyleyse, hangi dosya yolun ayarlandığını kontrol eder?

55
Jason S

Temel cevap: Muhtemelen /usr/local/bin. MacOS'unuzun ne kadar yeni olduğuna bağlı olarak, varsayılan $PATH adresinizi güncellemeniz gerekebilir. Daha fazla bilgi için aşağıya bakın.

GÜNCELLEME 12-01-2018 Orijinal cevabımı yazdığımdan bu yana Apple varsayılan $PATH değerini değiştirdi. Sonuç olarak, aşağıda söylediklerimin çoğu son Mac'ler ile ilgisiz. Bir terminale echo $PATH yazarsanız ve /usr/local/bin önce ise, $PATH'nuzu değiştirmekle ilgili aşağıdaki her şeyi görmezden gelebilirsiniz.

Orijinal cevap

Mac'ler bu konuda sıra dışı. Normal bir kullanıcı için varsayılan $PATH değişkeni şöyle görünür:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Mac, /usr/local/binafter/usr/bin ve /bin öğelerini koyarak, normal sistemi yükseltir. Normalde, /usr/local/bin içine bir şey koyabilirsiniz (standart olmayan şekilde derlenmiş ikinci bir Perl tercümanı söyleyin) ve ardından normal bir kullanıcı önce sistem genelinden ziyade özel olanı vuracaktır. Bu iyi. Kullanıcılar değişkenler alabilir, ancak sistem saf kalır. Bununla birlikte, Apple’ın varsayılan $PATH öğesi verildiğinde, /usr/bin veya /bin öğelerinde /usr/local/bin içindeki herhangi bir şeyden önce bulunur. (Bu temelde, örneğin, özel bir Perl'i /usr/local/bin içine kurmanın amacını yitirir.)

Bunu düzeltmek için, kullanıcının ana dizinindeki $PATH dosyasını düzenleyerek normal kullanıcının .profile değerini değiştirebilirsiniz. (Yepyeni bir yüklemeniz varsa, bu dosya bulunmayabilir. Bu durumda oluşturun.)

Yarı ilgili: Homebrew Mac'ler için mükemmel paket yönetimi sağlar. Varsayılan olarak, Homebrew yazılımı /usr/local içine yükler, ancak bunu daha sonra işleri çıkarmayı ve Vanilya durumuna geri dönmeyi kolaylaştıracak şekilde yapar.

47
Telemachus

/usr/local/bin ve /usr/local/sbin, yolunuza eklemeye değer, çünkü kaynak derlemeler için birçok makefile buraya yüklenir.

MacPorts kullanıyorsanız, /opt/local/bin ve /opt/local/sbin öğelerini de eklemeniz faydalı olacaktır.

Bunu yapmanın en iyi yolu eklemektir

export PATH=/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:$PATH

ana dizininizdeki .bashrc dosyasına (gizlidir, bu nedenle CLI bunu yapmanın en iyi yoludur) ya da sistemin geniş yolunu değiştirmek istiyorsanız, aynı satırı /etc/bashrc 'a (gizli değil) ekleyin, ancak Bunu yapmak için Sudo yapmanız gerekecek.

Herhangi bir kullanıcının evinde .bashrc yoksa, bir satır ekleyebilir ve bu satırı ekleyebilir, ancak söz konusu kullanıcı tarafından okunabilir kılmak için oluşturduğunuz dosyadaki izinleri değiştirmeyi unutmayın (açıkça Bunu kendi profilin için yapıyorum).

Sonundaki $PATH sistemi, daha önce ne koyduysanız ona varsayılan yolu ekler. Sistemin verilen yolları sırayla ikilileri aradığına dikkat edin; bu nedenle, sisteme varsayılan olarak da yüklenen /usr/local veya /opt/local içine bir ikili yüklerseniz, yüklediğiniz sürümler ilk önce bulunur; eşyalar. Dikkat etmeye değer.

İyi bilgi burada burada .

Yukarıdakilerin, Kabuk için varsayılan (== --- ==) Bash kullandığınızı farz etmeliyim ki bu, Mac OS X v10.4 (Tiger) ve Mac OS X v10.5 (Leopard), ancak daha önceki sistemlerde hangi yerine tcsh, hangisinin farklı bir sözdizimi vardır.

Umarım bu yardımcı olur...

9
avstrallen

/usr/local ile gitme eğilimindeyim. İşte Güzel bir açıklama neden , yani Dosya Sistemi Hiyerarşi Standardı (FHS) .⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢, sırayla /usr/local hakkında diyor:

Bu Ana Bilgisayar'a özgü yerel veriler için üçüncül hiyerarşi. Genellikle başka alt dizinleri de vardır, örneğin bin, lib, share.⁢

7
John Topley