Где я должен хранить приложения командной строки?

46

Когда я загружаю приложения командной строки, они находятся в моем ~/Downloads/каталоге. Но я чувствую, что это неправильное место для размещения приложения командной строки. Где в файловой системе Mac OS X следует хранить приложения командной строки?

/Applications/также чувствует себя не так, это больше для настольных приложений. И /bin/звучит больше для приложений, которые относятся к OS X.

Jonas
источник
Я согласен с вашим мнением, что размещение вещей непосредственно в / bin или / Applications, как правило, плохая форма. Ответ Патрикс - самое каноническое место, которое я видел для общего хранения программ и скриптов в командной строке.
bmike
Дубликат: apple.stackexchange.com/q/80902/20459
rm -rf
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'

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

Обычно я создаю каталог bin в каждой папке пользователя, а затем скрываю его от Finder, но вы можете сами принять решение, хотите ли вы, чтобы он был скрыт:

 mkdir ~/bin
 chflags hidden ~/bin

В этом случае вы захотите, чтобы путь каждого пользователя включал это местоположение, изменяя сценарии запуска оболочки ( ~/.bash_profileдля bash, который является стандартной оболочкой)

 export PATH=$PATH:~/bin

или путем жесткого кодирования пути к каждому приложению при его запуске.

Nohillside
источник
3
Это абсолютно лучшее предложение, которое я дам всем, кто попросит. Я добавлю только 2 вещи: 1) /etc/launchd.conf также может быть местом, где необходимо добавить путь, 2) хотя я использую / usr / local / для утилит Unix, установленных через homebrewмои собственные сценарии оболочки. у меня есть ~ / Dropbox / bin /, который я также добавил к своему $ PATH, чтобы у меня были все мои собственные сценарии оболочки на всех моих компьютерах Mac. Но я делаю это в дополнение к / usr / local / bin /, а не к нему.
TJ Luoma
/ usr / local / bin - это традиционное место UNIX для пользовательских сценариев, которое дает доступ любому другому пользователю в системе. Размещение сценариев позволит легко размещать сценарии в $ PATH всех пользователей. Но я считаю, что способ Mac , поскольку большинство компьютеров Mac имеют одного пользователя, состоит в том, чтобы создать ~/binкаталог, сделать его невидимым chflags uchg ~/binи добавить его пользователям, ~/.bash_profileчтобы сделать его частью $ PATH пользователей. ~/binэто превосходное место для безопасности и миграции. В противном случае вы должны помнить о том, что вы оставили в / usr / local / bin. И ln -s ~/bin ~/Dropbox/это тоже приятно.
Chillin
7

Подумайте о создании /optкаталога, который является другим местом, в котором пользовательское программное обеспечение Unix будет появляться по соглашению

Мэтт Стивенсон
источник
5
/opt/очень полезен для законченных приложений, тогда /usr/local/bin/как больше подходит для автономных сценариев командной строки. Часто предпочтительнее использовать /opt/в случаях, когда набор связанных скриптов действует как библиотека (например, /opt/myscriptslib/bin/).
Plasmid87
Спасибо за ваши советы. Я лично создал папку / opt / для установки своего программного обеспечения, а затем просто сделал символические ссылки на / usr / local / bin для всех исполняемых файлов ... тогда нет необходимости добавлять / opt / myspecific-soft в переменную окружения path ,
Рюффп