2013-09-08 3 views
37

Как я пишу свои сценарии bash для своей ОС X, которые делают общие вещи, мне интересно, где это место, чтобы сохранить их. Есть ли каталог, в который я могу поместить все, где они будут автоматически загружены? Или я должен создать свой собственный каталог, а затем ссылаться на этот каталог из .profile или что-то еще?Где вы храните свои собственные скрипты на OSX?

ответ

33

Обычно /usr/local/bin, если только вы не хотите, чтобы другие пользователи имели к ним доступ, и в этом случае $HOME/bin.

+7

+1 Кроме того, '/ usr/local/bin' может находиться в' PATH' по умолчанию, но '$ HOME/bin' почти наверняка будет добавлен. – chepner

+1

@chepner: да, это правда - я обычно добавляю '$ HOME/bin' в свой' PATH' и использую его для тестирования скриптов и исполняемых файлов. –

-3

На мой взгляд, вы можете разместить свои сценарии там, где хотите. Это не важно, если вы не использовали системные специальные папки. Я держу мой/scr с правами root только в этой папке. Это убедительно, потому что для всего скрипта в этой папке нужен root-доступ для правильной работы, и я не хочу, чтобы конечные пользователи заглядывали в эту папку.

11

я мой путь установлен как:

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin
  • $HOME/bin

Я использую /usr/local/bin для команд, которые у меня есть, что переопределяет команды по умолчанию. Например, у меня установлен Subversion 1.7.7, а OS X - 1.6.18. Версия 1.7.7 от svn находится в /usr/local/bin, тогда как версия 1.6.18 по умолчанию svn находится в /usr/bin. Когда я набираю svn, я получаю версию, которую я установил, вместо версии, поставляемой с OS X. Я сделал это с помощью Java, Git, Python и нескольких других двоичных файлов, где мне нужна другая версия, что было на моем Mac. Большинство из них - символические ссылки. Например:

$ ls -l /usr/local/bin/ant 
lrwxr-xr-x 1 root wheel  16 Jun 12 11:01 ant -> /opt/ant/bin/ant 

Ant 1.9.1 установлен в /opt/ant (на самом деле, /opt/apache-ant-1.9.1, но это символически связано с /opt/ant). Я связал все вещи под /opt/ant/bin до /usr/local/bin, так что это на моем пути.

Я использую $HOME/bin для своих личных сценариев оболочки и других скриптов. Традиционно вы делаете это последней записью в своем PATH, поэтому вы случайно не отменяете встроенную команду. Если я сделал команду сценария оболочки под названием cp, я бы не переопределил команду /bin/cp.

+3

Я поставил '$ HOME/bin' в начале моего пути, чтобы я мог переопределить выбор системы (и я усложняю свой путь, имея несколько версий Perl и GCC в отдельных каталогах и по умолчанию использую самую последнюю версию - они появляются после $ HOME/bin), но в остальном я иду с подобной ей системой. –

+0

@JonathanLeffler Вы должны посмотреть на [Perlbrew] (http://perlbrew.pl). Это позволяет легко переключаться между различными версиями Perl. Для других я поставил двоичные файлы в '/ opt', а затем ссылку. Например, у меня есть '/ opt/apache-ant-1.9.1','/opt/apache-ant-1.8.1', '/ opt/apache-ant-1.7.1' Тот, который я хочу использовать, Я ссылаюсь на '/ opt/ant'. Затем я свяжу двоичные файлы под '/ opt/ant/bin' с'/usr/local/bin'. Чтобы переключать версии, я просто изменяю ссылку под '/ opt' –

+0

@JonathanLeffler. Существует традиция хранить' $ HOME/bin' в конце вашего пути по причинам _security. Это было в те дни, когда все были в одной коробке Unix. Вероятно, это больше не применяется. Я использую '$ HOME/bin' в основном для сценариев оболочки и других скриптов. Бинарники установлены в другом месте и связаны с '/ usr/local/bin' –

5

Я использую ~/bin для исполняемых файлов и скриптов, которые я написал себе и /usr/local/bin для исполняемых файлов и скриптов, которые я сам не писал.

/usr/local/bin используется Homebrew, pipgem и npm установлено Homebrew), в качестве цели по умолчанию для make install, а также некоторых .pkg монтажников.

У меня был отдельный каталог для исполняемых файлов и скриптов, которые я сам не записывал и которые не были помещены в /usr/local/bin по умолчанию. Но в нем было так мало файлов, что я переместил все файлы в него на /usr/local/bin.

Я могу найти материал без домашних животных в /usr/local/bin с find /usr/local/bin ! -lname '../Cellar/*'.

Я не использую /usr/local/bin для сценариев я написал сам, потому что /usr/local/bin уже содержит около 1000 других файлов и ~/bin (или bin) часто легче напечатать.

Я добавил setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin в /etc/launchd.conf. Имея /usr/local/bin, прежде чем другие каталоги потенциально опасны, и, например, некоторые команды TextMate перестали работать из-за этого, но также удобно иметь более новые версии команд перед версиями, установленными системой, и использовать один и тот же путь везде.

Смежные вопросы