Стандартний каталог Unix для розміщення виконуваних файлів або сценаріїв? [зачинено]


79

Якщо у мене є власний сценарій оболонки або програми, які я створив сам або завантажив з Інтернету, і я хочу мати можливість виконати це з CLI, чи існує стандартне місце для розміщення цього в структурі каталогів Linux / Unix?

/usr/bin ?
/usr/local/bin ?
/usr/lib ?
/usr/sbin ?
/bin ?
/sbin ?
/var ?

Зазвичай я кладу його під свою папку ~ / bin і поміщаю в PATH, але це не здається чистим. І щоразу, коли я завантажував нову програму, я повинен знову поміщати її в PATH.


17
Я пропоную man hier.
Greg Hewgill

4
Якщо ваш ~ / bin знаходиться на PATH, тоді всі програми, які ви вкладете в ~ / bin, також повинні бути на вашому шляху ... Що ви маєте на увазі, що ви повинні знову помістити його в PATH?
tpg2114

Я погоджуюсь з @ tpg2114, ~/binце чудове місце для ваших скриптів оболонки, що належать користувачеві.
Ніклас Б.

Я помістив програми в іншу підпапку: ~ / bin / xyz, ~ / bin / abc. Тож я мушу покласти кожного з них у PATH.
atedja

1
Вам слід було б зробити те саме, незалежно від того, куди ви його тоді поклали. Якщо ви поставите / usr / bin / xyz, вам доведеться також додати це до шляху.
tpg2114

Відповіді:


87

/usr/local/binіснує саме для цієї мети, для загальносистемної установки. Для власного приватного користування ~/binце де-факто стандарт.

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

curl -o $HOME/downloads/fnord http://fnord.example.com/script.exe
ln -s $HOME/downloads/fnord $HOME/bin/

надається $HOME/bin у вашому PATH. (Є такі інструменти, stowякі роблять це - і багато іншого - за кадром для вас).


3
Як підказка для користувачів Mac: Якщо ви вибрали «~ / bin» і не хочете, щоб цей каталог відображався i Finder, ви можете зробити його невидимим за допомогою SETFILE (1) : «setfile -a V ~ / bin» для створення invisible та "setfile -av ~ / bin", щоб зробити його знову видимим. Зверніть увагу, що для цього потрібні інструменти Xcode .
Генрік

Дякую. Також пам’ятайте sbin для sudoers.
m3nda

@tripleee: Чи існує де-факто стандартний каталог для скриптів (bash, perl тощо)? Я думаю, наприклад, ~ / тощо? Справа в тому, що ви не робите резервну копію / відстежуєте за допомогою cvs / .. однаково сценарії та двійкові файли.
phs

2
@phs binпризначений для всіх видів виконуваних файлів, сценаріїв або належних двійкових файлів. Якщо ви хочете, щоб вони знаходились під прямим контролем binверсій, звичайно , можна ввести всі свої функції контролю версій; хоча частіше у вас є окремий проект для кожної або принаймні кожної окремої групи. Коли ви випускаєте нову версію, встановіть її у свою bin. Або якщо ви серйозно ставитесь до харчування собак і / або у вас занадто мало сюрпризів у вашому житті, помістіть у своєму документі символічне посилання на вашу версію для розробки bin.
триплі

Дякую, я зробив ln -s / usr / local / bin / root /, щоб краще відстежувати виконувані файли та дотримуватися обох стандартів;)
capitano666

17

Це може дещо відрізнятися залежно від смаку Unix. Я припускаю, що тут є Linux (хоча це може стосуватися і OSX). Відповідно до стандарту ієрархії файлової системи (FHS) (посилання отримано від робочої групи Linux Standard Base ):

/usr/localІєрархія для використання системного адміністратора при установці програмного забезпечення на місцевому рівні. Він повинен бути захищений від перезапису під час оновлення програмного забезпечення системи. Він може використовуватися для програм та даних, якими можна скористатися серед групи хостів, але не знайдених у/usr .

Локально встановлене програмне забезпечення має бути розміщене всередині, /usr/localа не /usrякщо воно встановлюється для заміни або оновлення програмного забезпечення в /usr.

/usr/local/bin часто знаходиться на шляху за замовчуванням.

Зверніть увагу, що вам слід розмістити лише виконуваний файл або посилання на нього /usr/local/bin, решта, можливо, доведеться увійти /usr/local/libабо /usr/local/share.

/optДерево може також бути розумним:

/opt зарезервовано для встановлення додаткових програмних пакетів програм.

Пакет, який слід встановити в / opt, повинен знаходити свої статичні файли в окремому дереві /opt/<package>або /opt/<provider>дереві каталогів, де <package>є ім'я, що описує програмний пакет, та <provider> зареєстроване ім'я постачальника LANANA.

[...]

Каталоги / opt / bin, / opt / doc, / opt / include, / opt / info, / opt / lib та / opt / man зарезервовані для використання локальним системним адміністратором. Пакети можуть надавати "інтерфейсні" файли, призначені для розміщення (за допомогою посилання або копіювання) цих зарезервованих каталогів місцевим системним адміністратором, але вони повинні нормально функціонувати за відсутності цих зарезервованих каталогів.

(Ви можете зробити свою власну посилання з /opt/your-package/bin/executableв /opt/bin, і покласти /opt/binна , PATHякщо він ще не існує.)

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