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


61

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 istersem, bir tane ise yönetici hesabım gibi yalnızca belirli bir kullanıcı için istiyorsam, farklı seçenekler var mı?

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

Yanıtlar:


53

Çekirdek cevap: Muhtemelen istiyorsun /usr/local/bin. MacOS'unuzun ne kadar yeni olduğuna bağlı olarak, varsayılan ayarlarınızı güncellemeniz gerekebilir $PATH. 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 ayarını değiştirdi $PATH. Sonuç olarak, aşağıda söylediklerimin çoğu son Mac'ler ile alakasız. echo $PATHBir terminal yazarsanız ve /usr/local/binönce iseniz, o zaman telefonunuzu değiştirmekle ilgili aşağıdaki her şeyi görmezden gelebilirsiniz $PATH.

Orijinal cevap

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

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

/usr/local/bin Sonra /usr/bin ve koyarak /bin, Mac olağan sistemi yükseltir. Normalde, bir şey koyabilirsiniz /usr/local/bin(örneğin standart olmayan bir şekilde derlenmiş ikinci bir Perl tercümanı söyleyin) ve ardından normal bir kullanıcı ilk önce sistem çapındaki yerine özel olanı vuracaktır. Bu iyi. Kullanıcılar değişkenler alabilir, ancak sistem saf kalır. $PATHBununla birlikte, Apple'ın varsayılanı göz önüne alındığında , içindeki /usr/binveya içindeki öğeler, içindeki /binherhangi bir şeyden önce bulunacaktır /usr/local/bin. (Bu, temel olarak, örneğin, özel Perl'yi takma amacını ortadan kaldırır /usr/local/bin.)

Bunu düzeltmek için $PATH, .profiledosyayı kullanıcının giriş dizininde düzenleyerek normal kullanıcıları 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ı yükler /usr/local, ancak bir şeyleri kaldırmayı ve daha sonra vanilya durumuna geri dönmeyi çok kolaylaştıracak şekilde yapar.


1
Yeni kurulan OsX 10.13.6’da (Yüksek Sierra), varsayılan olarak ilk önce / usr / local / bin (klasör olmasa bile) içeriyor.
Legolas

1
@Legolas Apple, bununla nasıl başa çıktıklarını değiştirdi gibi görünüyor. Gönderiyi düzenlerim.
Telemachus

9

/usr/local/binve /usr/local/sbinkaynak derlemeler için makefiles bir çok oraya yüklemek için varsayılan olarak, yolunuza eklemeye değer.

Eğer kullanırsanız MacPorts , bu ekleyerek değer /opt/local/binve /opt/local/sbinhem de.

Bunu yapmanın en iyi yolu eklemektir

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

Giriş .bashrcdizininizdeki dosyaya (gizli, yani CLI bunu yapmanın en iyi yoludur) veya sistemin geniş yolunu değiştirmek istiyorsanız, aynı satırı /etc/bashrc(gizlenmemiş) olarak ekleyin , ancak sudoBunu yapmanız gerek .

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

$PATHSonunda daha önce koymak ne olursa olsun, sistem varsayılan yolunu ekler. Sistemin ikili dosyaları verilen yollara göre aradığına dikkat edin; bu nedenle , sisteme varsayılan olarak yüklenmiş olan bir ikili dosya yüklerseniz /usr/localveya /opt/localyüklüyorsanız, yüklediğiniz sürümler ilk önce bulunur (ki bu nadiren de olsa). Dikkat etmeye değer.

İyi bilgi burada .

Yukarıdakilerin , Mac OS X v10.4 (Tiger) ve Mac OS X v10.5 (Leopard) için varsayılan olan kabuk için Bash kullandığını varsaydığımı , bunun yerine kullanılan önceki sistemlerde olmadığını unutmayın. farklı bir sözdizimi vardır.tcsh

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


1
/usr/local/binzaten varsayılan bir OS X'de $PATH(çok geç olsa da - cevabımı görün). MacPorts kullanıyorsanız, yükleyici yolunuzu gerektiği gibi düzenlemelidir - en azından benim deneyimimde var. Bununla birlikte, kullanıcıların ne yaptığını (ve neden) bilmesi iyidir.
Telemachus

iyi benekli @Telemachus: ne zaman kendim için bir Mac yaptıysam, cehennemi ilk işin dışına çıkardım, böylece standart olanı ve benim olanı asla hatırlayamıyorum!
avstrallen

1
MacPorts kurulum programı hakkında .profile içerisindeki yolları kişiselleştirerek neyle ilgilendiğinizi biliyorum, ancak geçmişte bir nedenden dolayı, ne yapmam gerektiğini bilmediğimde, bunun yapışmadığını (bu durum beni şaşkına çevirdi) uzunca bir süre!) ... o zamandan beri el ile bağlanma eğilimindeyim ...
avstrallen

"hangisi gizli, öyleyse CLI bunu yapmanın en iyi yolu": dilsiz soru, TextEdit'i komut isteminden bir dosyada nasıl çalıştırırsınız?
Jason S

Aptalca bir soru diye bir şey yok: openkomutu dosya ismiyle argüman olarak kullanın ve varsayılan metin editörü (standart olarak TextEdit) olarak ayarlanmış olanla açılmalıdır.
avstrallen

7

Ben gitme eğilimindeyim /usr/local. İşte neden güzel bir açıklama , bunun Dosya Sistem Hiyerarşisi Standardı (FHS) . dönüş hakkında diyor ki /usr/local:

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


Evet, bu konuda diğer * nix işletim sistemleriyle hemen hemen aynı.
jtbandes

2
Bağlantılı sayfalar değişirse cevap geçersiz hale gelebileceğinden, lütfen cevabın temel kısımlarını referans bağlantılardan alıntılayın.
DavidPostill
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.