你在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/binsvn的默认版本位于/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安装的gemnpm )用作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权限才能正确执行,我不希望最终用户查看该文件夹。