Де гарне постійне місце для встановлення користувацьких скриптів bash?


32

Я збираюся встановити "leiningen", який є баш-скриптом для мови програмування clojure з великою кількістю корисності ... ... але я не впевнений, де доцільно -put- виконуваний скрипт у Linux Система, щоб вона була постійно та стабільно доступною.

Я не думаю, що де-небудь в / домі має сенс, але я не знаю, який каталог / каталоги повинні використовуватись для цього.

/ usr / share?


Відповіді:


45

(Примітка: ~перекладається як /home/userу цій публікації)

Особисто я вкладаю всі мої системні сценарії на замовлення /usr/local/binта всі мої особисті сценарії bash ~/bin. Дуже мало програм, які я встановлюю, розміщують себе в /usr/local/binкаталозі, так що це не дуже захаращено, і це вже було в $PATHзмінній на більшості моїх машин.

Щоб додати /usr/local/binдо системного шляху (якщо його ще немає), додайте це до /etc/profile:

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

Щоб додати ~/binдо шляху свого користувача, додайте це до ~/.bash_profile:

PATH=$PATH:$HOME/bin
export PATH

Іноді у .bash_profileфайлі за замовчуванням буде оператор if, який автоматично додається ~/binдо $PATHйого наявності, тому створіть ~/binі відкрийте новий термінал, щоб побачити, чи вже це робить ваш.


BSD роблять це за замовчуванням.
Кріс S

@Chris: BSD розмістили багато матеріалів у / usr / local / bin
Dan Andreatta

Яка різниця між вашими bash-скриптами та системними скриптами, і чи є причина, що ви розділите це два?
Хашим

@Hashim Я не можу говорити за Трей, звичайно, але інструменти, які ви розробляєте для своїх особистих потреб, як правило, "переходять" на системні інструменти, коли ви помітили, що вони вирішують проблему, з якою інші стикаються, або у вас інша установка, що залежить від системи, від якої залежить на одному з цих інструментів. Я підозрюю, що для більшості програмістів поріг встановити щось загальносистемне досить високий. Також інструмент, яким ви ділитесь, повинен мати документацію тощо, про яку багато розробників рідко пишуть інакше.
трійка

На відміну від цього немає необхідності exportкілька разів змінювати змінну (і, напевно, ваша система вже позначена PATHдля експорту, тому вам зовсім не доведеться робити це самостійно).
трійка

9

/ usr / local / насправді є правильним місцем, тоді як / opt дійсно для сторонніх додатків; "/ opt зарезервовано для встановлення додаткових програмних пакетів програм." Це частина стандарту ієрархії файлової системи.

Див. Http://www.pathname.com/fhs/pub/fhs-2.3.html для обговорення щодо / opt.

Для / usr / local / він призначений для "використання системним адміністратором". Просто не забувайте про речі там - задокументуйте це.


Посилання, яке ви надали, говорить "Каталоги / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib та / opt / man зарезервовані для використання в локальному системному адміністраторі." Нічого про / usr / local. Там згадується лише / usr / local / share. З іншого боку, компільовані програми зазвичай встановлюються в / usr / local в Linux. Ви не вважаєте, що / opt / bin є кращим місцем для використання системним адміністратором?
гонщик

1
@raacer Мій досвід полягає в тому, що /usr/local- як випливає з назви - призначений для місцевого адміністратора, а також /optдля речей, які офіційно не розповсюджуються, як, наприклад, комерційне сторонне програмне забезпечення, яким керується аналогічним процесом (може бути замінено або видалено в оновлення від вище за течією), але не керується диспетчером пакунків дистрибутива, або, можливо, фактично поширюється як RPM або .debпакети, але не організовано і упаковано відповідно до всіх політик та умов дистрибуції.
трійка

1
@raacer Є окремий розділ, повністю про який /usr/localпізніше в документі.
трійка

@raacer tripleee має рацію. Ось посилання: pathname.com/fhs/pub/… .. правильні, компільовані програми (зазвичай з відкритим кодом), які компілюються / будуються спеціально для цієї системи або поділяються між декількома системами (але не є частиною звичайної упаковки / розповсюдження ОС, але вони в значній мірі покладаються на спільні лібри) слід встановлювати в / usr / local (в основному відображає ієрархію / usr). Програмне забезпечення сторонніх розробників, складене в можливо іншій системі з можливо власною підтримкою бібліотеки (наприклад, firefox, userify), має перейти в / opt.
Джеймісон Бекер

3

Історично ви використовували щось на кшталт / opt. Все добре, доки він оновлюється в $ PATH для користувачів, які повинні мати це (отже, все, що в / вдома, є поганою ідеєю).


2

/usr/share/clojureвидається загальним місцем розміщення бінарних файлів і бібліотек clojure - чому я не знаю, це здається природним /usr/local/share/clojure- тому створення siteпідкаталогу під ці сценарії bash здається прекрасним.

Загальний сенс полягає в тому, що має сенс організувати сценарії за функцією, а не всі скрипти bash в одному місці.


1
Для цього існує пара проблем /usr/share. Перш за все це shareозначає, що архітектура не залежить від архівів (тобто спільно використовуються між архітектурами). З цієї причини бібліотеки та виконавчі файли не належать до shareкаталогу. По-друге, за винятком /usr/localнічого іншого, окрім як менеджер дистриб'юторських пакетів не повинен писати /usr.
kasperd

2

/usr/local, Я вважаю, є деяка плутанина в значенні "місцевого".

Як я розумію, "локальний" не означає "походження з / з локальної машини", а, простіше кажучи, "специфічний для локальної машини", який може або не може походити з / з локальної машини.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.