Di mana tempat permanen yang bagus untuk memasang skrip bash khusus?

32

Saya akan menginstal "leiningen" yang merupakan skrip bash untuk bahasa pemrograman clojure dengan banyak kegunaan ... ... tapi saya tidak yakin di mana yang sesuai untuk -put- skrip yang dapat dieksekusi di linux sistem sehingga tersedia secara permanen dan stabil.

Saya tidak berpikir bahwa di mana saja di / home masuk akal, tapi saya tidak tahu direktori / direktori mana yang seharusnya digunakan untuk itu.

/ usr / bagikan?

Kzqai
sumber
1
pathname.com/fhs/pub/fhs-2.3.html
Ignacio Vazquez-Abrams

Jawaban:

45

(Catatan: ~diterjemahkan seperti /home/userpada posting ini)

Secara pribadi, saya memasukkan semua skrip sistem buatan saya ke dalam /usr/local/bindan semua skrip bash pribadi saya ~/bin. Sangat sedikit program yang saya instal menempatkan dirinya di /usr/local/bindirektori sehingga tidak sangat berantakan dan itu sudah dalam $PATHvariabel di sebagian besar mesin saya.

Untuk menambah /usr/local/binjalur sistem Anda (jika belum ada) tambahkan ini ke /etc/profile:

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

Untuk menambahkan ~/binke jalur pengguna Anda, tambahkan ini ke ~/.bash_profile:

PATH=$PATH:$HOME/bin
export PATH

Terkadang .bash_profilefile default akan memiliki pernyataan if yang secara otomatis ditambahkan ~/binke $PATHjika ada, jadi buat ~/bindan buka terminal baru untuk melihat apakah Anda sudah melakukan ini.

Trey Hunner
sumber
BSD melakukan ini secara default.
Chris S
@ Chris: BSD menaruh banyak barang di / usr / local / bin
Dan Andreatta
Apa perbedaan antara skrip bash dan skrip sistem, dan apakah ada alasan Anda memisahkan keduanya?
Hashim
@Hashim Saya tidak bisa berbicara untuk Trey tentu saja, tetapi alat yang Anda kembangkan untuk kebutuhan pribadi Anda cenderung "beralih" ke alat sistem ketika Anda melihat mereka memecahkan masalah yang sedang dihadapi orang lain, atau Anda memiliki pemasangan di seluruh sistem yang tergantung pada salah satu alat ini. Saya menduga ambang batas untuk menginstal sesuatu yang sistem-lebar agak tinggi untuk sebagian besar programmer. Juga, alat yang Anda bagikan perlu memiliki dokumentasi dll yang banyak pengembang jarang menulis sebaliknya.
tripleee
Sebagai tambahan, tidak perlu exportvariabel beberapa kali (dan mungkin sistem Anda sudah ditandai PATHuntuk ekspor, jadi Anda tidak perlu melakukannya sendiri sama sekali).
tripleee
9

/ usr / local / benar-benar tempat yang tepat, sementara / opt benar-benar untuk aplikasi pihak ketiga; "/ opt disediakan untuk instalasi paket perangkat lunak aplikasi tambahan." Ini adalah bagian dari Standar Hirarki Sistem Files.

Lihat http://www.pathname.com/fhs/pub/fhs-2.3.html untuk diskusi di / opt.

Untuk / usr / local /, ini untuk "digunakan oleh administrator sistem". Jangan lupa tentang hal-hal di sana - dokumentasikan.

Jamieson Becker
sumber
Tautan yang Anda berikan memberi tahu "Direktori / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib, dan / opt / man dicadangkan untuk penggunaan administrator sistem lokal." Tidak ada apa-apa tentang / usr / local. Hanya / usr / local / share yang disebutkan di sana. Di sisi lain, program yang dikompilasi biasanya diinstal ke / usr / local di Linux. Tidakkah menurut Anda / opt / bin adalah tempat yang lebih baik untuk digunakan oleh administrator sistem?
raacer
1
@raacer Pengalaman saya adalah /usr/local- seperti namanya - untuk admin lokal, dan /optuntuk hal-hal yang tidak didistribusikan secara resmi, seperti perangkat lunak pihak ketiga komersial yang dikelola oleh proses yang serupa (mungkin diganti atau dihapus dalam peningkatan dari upstream) tetapi tidak dikelola oleh manajer paket distro, atau mungkin benar-benar didistribusikan sebagai RPM atau .debpaket, tetapi tidak diorganisir dan dikemas dengan mematuhi semua kebijakan dan konvensi distro.
tripleee
1
@raacer Ada bagian terpisah seluruhnya tentang /usr/localdokumen ini nanti.
tripleee
@raacer tripleee benar. Berikut tautannya: pathname.com/fhs/pub/… .. benar, program yang dikompilasi (biasanya open source) yang dikompilasi / dibangun secara khusus untuk sistem itu atau dibagi di antara beberapa sistem (tetapi bukan bagian dari kemasan / distribusi OS normal, tetapi yang sangat bergantung pada lib bersama) harus diinstal ke / usr / local (pada dasarnya mencerminkan hierarki / usr). Perangkat lunak pihak ketiga yang dikompilasi pada sistem yang mungkin berbeda dengan kemungkinan dukungan perpustakaan mereka sendiri (yaitu, firefox, userify) harus masuk ke / opt.
Jamieson Becker
3

Secara historis Anda akan menggunakan sesuatu seperti / opt. Apa pun baik-baik saja asalkan diperbarui dalam $ PATH untuk pengguna yang seharusnya memilikinya (maka apa pun di / rumah menjadi ide yang buruk).

Tony
sumber
2

/usr/share/clojuresepertinya tempat yang biasa untuk meletakkan binari dan perpustakaan clojure - mengapa saya tidak tahu, sepertinya alami untuk /usr/local/share/clojure- jadi membuat sitesubdirektori di bawah ini untuk skrip bash ini sepertinya baik-baik saja.

Poin umum adalah lebih masuk akal untuk mengatur skrip berdasarkan fungsi, tidak memiliki semua skrip bash di tempat yang sama.

Charles Stewart
sumber
1
Ada beberapa masalah dalam menggunakan /usr/shareini. Pertama-tama shareberarti file independen arsitektur (mis. Dibagikan di seluruh arsitektur). Karena alasan itu perpustakaan dan file yang dapat dieksekusi tidak termasuk dalam sharedirektori. Kedua kecuali dari /usr/localtidak ada yang harus ditulis oleh manajer paket distribusi /usr.
kasperd
2

/usr/local, Saya percaya ada beberapa kebingungan dengan arti "lokal".

Seperti yang saya pahami, "lokal" tidak berarti "berasal dari / dari mesin lokal" tetapi, lebih sederhana, "khusus untuk mesin lokal", yang mungkin berasal atau tidak berasal dari / dari mesin lokal.

Hatebit
sumber