Özel bash scriptlerini kurmak için iyi bir kalıcı yer neresidir?


32

Clojure programlama dili için çok fazla yararlı olan bir bash betiği olan "leiningen" i kurmak üzereyim ... ... ama Linux'ta çalıştırılabilir bir betiğe uygun bir yer olduğundan emin değilim. sistem kalıcı ve kararlı bir şekilde temin edilebilir.

İçeride / evde hiçbir şeyin bir anlamı olmadığını sanmıyorum, ancak bunun için hangi dizinin / dizinlerin kullanılması gerektiğini bilmiyorum.

/ Usr / share?


Yanıtlar:


45

(Not: bu gönderideki ~gibi çevirir /home/user)

Şahsen, ısmarlama sistem komut dosyalarımın /usr/local/bintümüne ve kişisel bash komut dosyalarımın tümüne yazdım ~/bin. Kurduğum çok az program kendilerini /usr/local/bindizine yerleştirir, bu yüzden çok karışık değildir ve $PATHmakinelerimin çoğunda değişken olmuştur.

/usr/local/binSistem yolunuza eklemek için (zaten orada değilse) şunu ekleyin /etc/profile:

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

Eklemek için ~/binsizin kullanıcının yolundaki bu eklemek ~/.bash_profile:

PATH=$PATH:$HOME/bin
export PATH

Bazen varsayılan .bash_profiledosya otomatik olarak ekleyen bir eğer deyimi olacaktır ~/biniçin $PATHvarsa, bu nedenle oluşturabilir ~/binve sizin zaten bunu yapar olmadığını görmek için yeni bir terminal açın.


BSD'ler bunu varsayılan olarak yapar.
Chris S,

@Chris: BSD'ler / usr / local / bin dizinine birçok şey koyar
Dan Andreatta

Bash betiğiniz ile sistem betikleri arasındaki fark nedir ve ikisini ayırmanızın bir nedeni var mı?
Hashim

@Hashim Trey için konuşamıyorum elbette, ancak kişisel ihtiyaçlarınız için geliştirdiğiniz araçlar, başkalarının uğraştığı bir sorunu çözdüklerini fark ettiğinizde, sistem araçlarına "mezun" olma eğilimindedir ya da bağlı olan başka bir sistem kurulumuna sahip olursunuz. Bu araçlardan birinde. Sistem genelinde bir şey yükleme eşiğinin çoğu programcı için oldukça yüksek olduğundan şüpheleniyorum. Ayrıca, paylaştığınız bir aracın birçok geliştiricinin nadiren yazdığı belgelere vb. Sahip olması gerekir.
üçlü

Bir kenara, exportbir defalarca bir değişkene gerek yoktur (ve muhtemelen sisteminiz zaten PATHihracat için işaretlenmiştir , bu nedenle bunu kendiniz yapmak zorunda değilsiniz).
üçlü

9

/ usr / local / gerçekten doğru yer, / opt ise gerçekten üçüncü parti uygulamalar için; "/ opt, eklenti uygulama yazılımı paketlerinin kurulumu için ayrılmıştır." Bu, Dosya Sistemi Hiyerarşi Standardının bir parçasıdır.

Bkz http://www.pathname.com/fhs/pub/fhs-2.3.html / opt üzerine tartışma için.

/ Usr / local / için, "sistem yöneticisi tarafından kullanılmalıdır" içindir. Sadece oradaki şeyleri unutma - bunu belgeleyin.


Sağladığınız bağlantı "/ opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib ve / opt / man dizinleri yerel sistem yöneticisi kullanımına mahsustur." / Usr / local hakkında hiçbir şey yok. Orada sadece / usr / local / share belirtilir. Öte yandan, derlenmiş programlar genellikle Linux'ta / usr / local içine kurulur. Sistem yöneticisi tarafından kullanım için / opt / bin'in daha iyi bir yer olduğunu düşünmüyor musunuz?
Raacer

1
@raacer Benim deneyimim /usr/local- adından da anlaşılacağı gibi - yerel yönetici ve /optresmi olarak dağıtılmayan şeyler için, benzer bir işlemle yönetilen ticari üçüncü taraf yazılımı gibi (yükseltme işleminde değiştirilebilir veya silinebilir) upstream) ancak dağıtımcının paket yöneticisi tarafından yönetilmiyor, belki de aslında RPM veya .debpaketler olarak dağıtılıyor , ancak tüm dağıtım politikaları ve sözleşmelerine uygun olarak organize edilmemiş ve paketlenmemiş.
üçlü

1
@raacer Tamamen /usr/localdaha sonra belgede ayrı bir bölüm var .
üçlü

@raacer üçlü haklı. İşte link: pathname.com/fhs/pub/… .. doğru, bu sistem için özel olarak derlenmiş / oluşturulmuş veya birkaç sistem arasında paylaşılan (normal işletim sistemi paketlemesinin / dağıtımının bir parçası olmayan) derlenmiş programlar (genellikle açık kaynak), ancak, yoğun olarak paylaşılan kütüphanelere dayanan) / usr / local içine kurulmalıdır (temelde / usr hiyerarşisini yansıtır). Muhtemelen farklı bir sistemde derlenmiş olan ve muhtemelen kendi kütüphane desteği olan (yani, firefox, userify) üçüncü taraf yazılımı devreye girmeli / seçilmelidir.
Jamieson Becker,

3

Tarihsel olarak / opt gibi bir şey kullanırdın. Her şey $ PATH’da olması gereken kullanıcılar için (bu nedenle / evdeki herhangi bir şey kötü bir fikir olmak üzere) olması gerektiği sürece güncellenir.


2

/usr/share/clojureclojure'un ikili dosyalarını ve kitaplıklarını koymak için ortak bir yer gibi görünüyor - neden bilmiyorum, doğal bir şey gibi görünüyor /usr/local/share/clojure- bu yüzden sitebu bash betiği için bunun altında bir alt dizin oluşturmak iyi görünüyor.

Genel nokta, tüm bash komut dosyalarının aynı yerde olmaması, komut dosyalarını işlevine göre düzenlemenin daha mantıklı olmasıdır.


1
Bunun için birkaç sorun var /usr/share. Öncelikle sharemimariden bağımsız dosyalar (yani mimariler arasında paylaşılan) anlamına gelir. Bu nedenle kütüphaneler ve çalıştırılabilir dosyalar bir sharedizine ait değildir . İkincisi /usr/local, dağıtım paket yöneticisinden başka hiçbir şeyden önce hiç yazmamalı /usr.
kasperd

2

/usr/local“Yerel” anlamında bir karışıklık olduğuna inanıyorum.

Anladığım kadarıyla "yerel", "yerel makineden / makineden kaynaklanıyor" anlamına gelmez, daha basit bir ifadeyle, yerel makineden / makineden kaynaklanabilen veya kaynaklanamayan "yerel makineye özgü" anlamına gelir.

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.