你在OSX上保留自己的脚本?
当我为我的OS X编写我的bash脚本来做一般事情时,我想知道哪里是保持它们的好地方。 有没有一个目录,我可以把他们全部在哪里会被自动拾取? 或者我应该创build我自己的目录,然后从.profile或其他引用该目录?
通常是/usr/local/bin
,除非你不希望其他用户有权访问它们,在这种情况下$HOME/bin
。
我有我的path设置为:
-
/usr/local/bin
-
/usr/bin
-
/bin
-
/usr/sbin
-
/sbin
-
$HOME/bin
我使用/usr/local/bin
来获取覆盖默认命令的命令。 例如,我安装了Subversion 1.7.7,OS X自带1.6.18。 svn
1.7.7版本位于/usr/local/bin
, 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
,所以它在我的path中。
我使用$HOME/bin
作为个人shell脚本和其他脚本。 传统上,您将其设置为PATH中的最后一个条目,因此您不会意外地覆盖内置命令。 如果我创build了一个名为cp
的shell脚本命令,我不会覆盖/bin/cp
命令。
我使用~/bin
作为我自己写的可执行文件和脚本, /usr/local/bin
作为我自己写的可执行文件和脚本。
/usr/local/bin
被Homebrew, pip
(以及由Homebrew安装的gem
和npm
)用作make install
的默认目标,以及一些.pkg
安装程序。
我曾经有一个单独的目录,用于执行程序和脚本,我没有自己写,而且默认情况下并没有放在/usr/local/bin
。 但是它包含了很less的文件,我将其中的所有文件移动到/usr/local/bin
。
我可以在/usr/local/bin
find /usr/local/bin ! -lname '../Cellar/*'
的非自制软件find /usr/local/bin ! -lname '../Cellar/*'
find /usr/local/bin ! -lname '../Cellar/*'
。
我不使用/usr/local/bin
作为我自己编写的脚本,因为/usr/local/bin
已经包含大约1000个其他文件,并且~/bin
(或bin
)通常更容易input。
我添加了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命令因此而停止工作,但在系统安装的版本之前使用较新版本的命令并且使用相同的path。
在我看来,你可以把你的脚本放在你想要的地方。 除非你使用系统specefic文件夹,否则它真的不重要。 我确实保留在/ scr根目录只有在该文件夹的权限。 这是很有说服力的,因为这个文件夹中的所有脚本都需要root权限才能正确执行,我不希望最终用户查看该文件夹。