Де слід зберігати програми командного рядка?


46

Коли я завантажую програми командного рядка, вони знаходяться в моєму ~/Downloads/каталозі. Але я вважаю, що це неправильне місце для розміщення програми командного рядка. Де у файловій системі Mac OS X слід зберігати програми командного рядка?

/Applications/також почувається не так, це більше для настільних програм. І /bin/більше звучить для додатків, що належать до OS X.


Я погоджуюся з вашими думками, що розміщення речей безпосередньо в / bin або / Applications - це погана форма. Відповідь Patrix - це найбільш канонічне місце, яке я бачив для загального зберігання програм і сценаріїв командного рядка.
bmike


2
Я не вважаю це дублікатами, оскільки пов'язане питання, мабуть, більше стосується жонглювання декількома сторонніми виборами, і це більш чисто - куди йдуть мої завантажені програми вручну.
bmike

Відповіді:


44

Оскільки OS X походить із спадщини unix, ви захочете зберігати системні файли /usr/local/binдля програм та скриптів командного рядка, які належать системі локально, а не конкретному користувачеві. Вам може знадобитися створити цей каталог спочатку, запустивши:

sudo mkdir -p /usr/local/bin

Ви можете перемістити будь-яку програму командного рядка до цієї папки, виконавши:

sudo mv my-binary /usr/local/bin/

Щоб переконатися, що /usr/local/binце частина вашого стандартного шляху пошуку в Терміналі, перевірте вміст /etc/pathsта додайте його, якщо потрібно:

grep -w /usr/local/bin /etc/paths || sudo sh -c 'echo /usr/local/bin >> /etc/paths'

Деякі користувачі складають другий каталог для сценаріїв користувачів, але це ще більше залежить від особистих переваг.

Зазвичай я створюю каталог бін у кожній папці користувача, а потім приховую його від Finder - але ви можете прийняти це рішення самостійно, хочете, щоб він був прихованим:

 mkdir ~/bin
 chflags hidden ~/bin

У цьому випадку вам потрібно, щоб шлях кожного користувача включав це місце, змінюючи сценарії запуску оболонки ( ~/.bash_profileдля bash, яка є стандартною оболонкою)

 export PATH=$PATH:~/bin

або жорстким кодуванням шляху до кожної програми під час запуску.


3
Це абсолютно найкраща пропозиція і та, яку я б дав кожному, хто попросив. Я додаю лише 2 речі: 1) /etc/launchd.conf також може бути місцем, де потрібно додати шлях, 2) хоча я використовую / usr / local / для утилітів Unix, встановлених через homebrewдля власних скриптів оболонки I мати ~ / Dropbox / bin /, який я також додав до свого $ PATH, тому у мене є всі мої власні сценарії оболонки на всіх моїх Mac. Але я роблю це на додаток до / usr / local / bin /, а не замість нього.
TJ Luoma

/ usr / local / bin - це традиційне місце UNIX для сценаріїв користувача, яке надає доступ будь-якому іншому користувачеві в системі. Якщо розмістити сценарії там, ви зможете без особливих зусиль помістити сценарії в $ PATH всіх користувачів. Але я вважаю, що спосіб Mac , оскільки більшість Macs має одного користувача, це створити ~/binкаталог, зробити його невидимим chflags uchg ~/binі додати його до користувачів, ~/.bash_profileщоб він став частиною користувачів $ PATH. ~/binце чудове місце для безпеки та міграції. Інакше вам доведеться пам’ятати про речі, які ви залишили у / usr / local / bin. І ln -s ~/bin ~/Dropbox/також приємно.
чилін

7

Розглянемо можливість створення /optкаталогу, який є ще одним місцем розташування, у якому користувальницьке програмне забезпечення Unix з'явилося б умовно


5
/opt/дуже корисний для повних програм, тоді /usr/local/bin/як більше підходить для автономних сценаріїв командного рядка. Часто бажано використовувати /opt/в тих випадках, коли колекція пов'язаних сценаріїв виконує функції бібліотеки (наприклад, /opt/myscriptslib/bin/).
plazmid87

Дякуємо за ваші поради. Я особисто створив папку / opt /, щоб помістити своє програмне забезпечення, і тоді я просто зробив символічні посилання на / usr / local / bin для всіх виконуваних файлів ... тоді не потрібно додавати / opt / myspecific-soft у змінну середовища контуру .
рüффп
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.