Как я пишу свои сценарии bash для моей OS X, которые делают общие вещи, мне интересно, где это хорошее место для их хранения. Есть ли каталог, в который я могу поместить все, где они будут автоматически загружены? Или я должен создать свой собственный каталог, а затем ссылаться на этот каталог из .profile или что-то в этом роде?
Где вы держите свои собственные скрипты на OSX?
Ответ 1
Обычно /usr/local/bin
, если вы не хотите, чтобы другие пользователи имели к ним доступ, и в этом случае $HOME/bin
.
Ответ 2
У меня установлен PATH как:
-
/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,27 > по умолчанию 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, поэтому вы случайно не отменяете встроенную команду. Если я сделал команду оболочки script под названием cp
, я бы не переопределял команду /bin/cp
.
Ответ 3
Я использую ~/bin
для исполняемых файлов и скриптов, которые я написал себе, и /usr/local/bin
для исполняемых файлов и сценариев, которые я сам не писал.
/usr/local/bin
используется Homebrew, pip
(и gem
и 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 перестали работать из-за этого, но также удобно иметь более новые версии команд перед системно установленными версиями и использовать один и тот же путь везде.
Ответ 4
На мой взгляд, вы можете разместить свои скрипты там, где хотите. Это не важно, если вы не использовали системные специальные папки. Я держу мой /scr с правами root только в этой папке. Это убедительно, потому что для всех script в этой папке нужен root-доступ для правильной работы, и я не хочу, чтобы конечные пользователи заглядывали в эту папку.