Де гарне постійне місце для встановлення користувацьких скриптів 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.