Komut satırı uygulamalarını nerede saklamalıyım?


46

Komut satırı uygulamaları indirdiğimde dizimde bulunuyorlar ~/Downloads/. Ancak bir komut satırı uygulamasının yerleştirilmesi için buranın yanlış bir yer olduğunu düşünüyorum. Mac OS X dosya sisteminde komut satırı uygulamalarını nerede saklamalıyım?

/Applications/Ayrıca yanlış geliyor, masaüstü uygulamaları için daha fazla. Ve /bin/OS X'e ait uygulamalar için daha çok ses geliyor.


Bir şeyi doğrudan / bin veya / Uygulamalar içine yerleştirmenin genel olarak kötü bir formda olduğu fikrine katılıyorum. Patrix'in cevabı, programların ve komut dosyalarının genel komut satırı depolaması için gördüğüm en kurallı konumdur.
bmike


2
Bağlantılı soru üçüncü taraf seçimlerinde hokkabazlık gibi göründüğü için bunları yinelenmiş olarak görmüyorum ve bu daha saf bir şey - elle indirilen uygulamalarım nereye gidiyor?
bmike

Yanıtlar:


44

OS X bir unix mirasından geldiğinden, sistem dosyalarını /usr/local/binbelirli bir kullanıcıya değil yerel olarak sisteme ait komut satırı uygulamaları ve komut dosyalarında saklamak isteyeceksiniz . Önce bu dizini oluşturmanız gerekebilir:

sudo mkdir -p /usr/local/bin

Çalıştırarak herhangi bir komut satırı uygulamasını bu klasöre taşıyabilirsiniz:

sudo mv my-binary /usr/local/bin/

/usr/local/binTerminal'de standart arama yolunuzun bir parçası olduğundan emin olmak için içeriğini kontrol edin /etc/pathsve gerekirse ekleyin:

grep -w /usr/local/bin /etc/paths || sudo sh -c 'echo /usr/local/bin >> /etc/paths'

Bazı kullanıcılar, kullanıcı düzeyinde komut dosyaları için ikinci bir dizin oluşturur, ancak bu daha çok kişisel tercihlere tabidir.

Genelde her kullanıcı klasöründe bir bin dizini hazırlarım ve sonra onu Finder'dan gizlerim - ancak bu kararı gizlemek isteyip istemediğinizi kendiniz belirleyebilirsiniz:

 mkdir ~/bin
 chflags hidden ~/bin

Bu durumda, kabuk başlangıç ​​komut dosyalarını değiştirerek her kullanıcının yolunun bu konumu içermesini istersiniz ( ~/.bash_profilestandart kabuk olan bash için).

 export PATH=$PATH:~/bin

veya çalıştırdığınızda her uygulamanın yolunu zor kodlayarak.


3
Bu kesinlikle en iyi öneri ve isteyen herkese vereceğim. Sadece 2 şey ekleyeceğim: 1) /etc/launchd.conf ayrıca yolun eklenmesi gereken bir yer olabilir, 2) / usr / local / için homebrewkendi kabuk komut dosyalarım için yüklenen Unix yardımcı programları kullanıyorum ~ / Dropbox / bin / 'i de seçip $ PATH’e ekledim, böylece tüm Mac’lerimde tüm özel shell scriptlerime sahibim. Ama bunu yerine / usr / local / bin / dizinine ek olarak yapıyorum.
TJ Luoma

/ usr / local / bin olan sistemde başka bir kullanıcı erişim sağlayan bir kullanıcının komut dosyaları için geleneksel UNIX nokta. Buraya komut dosyaları koymak, komut dosyalarını tüm kullanıcıların $ PATH dizinlerine zahmetsizce koyacaktır. Ancak , çoğu Mac'in tek bir kullanıcısı olduğu için Mac yolunun bir dizin oluşturmak , görünmez hale getirmek ve kullanıcıları $ PATH kullanıcılarının bir parçası haline getirmek için kullanıcılara eklemek olduğuna inanıyorum . Güvenlik ve göç için üstün bir yer. Aksi halde, / usr / local / bin içinde bıraktığınız öğeleri hatırlamanız gerekir. Ve ayrıca güzel. ~/binchflags uchg ~/bin~/.bash_profile~/binln -s ~/bin ~/Dropbox/
chillin

7

/optÖzel Unix yazılımının kurallara göre görüneceği başka bir konum olan bir dizin oluşturmayı düşünün .


5
/opt//usr/local/bin/Bağımsız uygulamalar için komut satırı komut dosyaları için daha uygun, tam uygulamalar için çok kullanışlıdır . /opt/İlgili komut dizilerinin bir koleksiyonunun kütüphane görevi gördüğü durumlarda kullanmak genellikle tercih edilir (örn /opt/myscriptslib/bin/.).
plasmid87, 10

Tavsiyeleriniz için teşekkürler. Yazılımımı koymak için / opt / klasörünü kişisel olarak oluşturdum ve sonra sadece tüm çalıştırılabilir dosyalar için / usr / local / bin sembolik bağlarını yaptım ... sonra yol ortam değişkenine / opt / myspecific-soft eklemeye gerek kalmadı .
рüффп
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.