你在OSX上将自己的脚本保存在哪里?

时间:2013-09-08 09:53:46

标签: macos bash terminal

当我为我的OS X编写我的bash脚本做一般事情时,我想知道哪里是保存它们的好地方。是否有一个目录我可以将它们全部放在自动拾取的位置?或者我应该创建自己的目录,然后从.profile或其他东西引用这个目录?

4 个答案:

答案 0 :(得分:55)

通常为/usr/local/bin,除非您不希望其他用户访问它们,在这种情况下$HOME/bin

/usr/local/bin可能位于默认路径中,但肯定需要将$HOME/bin添加到PATH中。

<小时/> $HOME/bin添加到路径:

PATH=${PATH}:$HOME/bin
export PATH

答案 1 :(得分:17)

我的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的默认1.6.18版本位于/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}安装在/opt/ant中(实际上是/opt/apache-ant-1.9.1,但它与/opt/ant符号链接)。我将/opt/ant/bin下的所有内容与/usr/local/bin相关联,因此它就在我的路径中。

我将$HOME/bin用于我的个人shell脚本和其他脚本。传统上,您将此作为PATH中的最后一个条目,因此您不会意外地覆盖内置命令。如果我创建了一个名为cp的shell脚本命令,我就不会覆盖/bin/cp命令。

答案 2 :(得分:9)

我使用~/bin表示我自己编写的可执行文件和脚本,/usr/local/bin表示我自己编写的可执行文件和脚本。

Homebrew使用

/usr/local/binpip(以及Homebrew安装的gemnpm)作为make install的默认目标,并由某些人使用.pkg安装程序。

我曾经有一个单独的目录,用于我自己没有编写的可执行文件和脚本,默认情况下没有放在/usr/local/bin中。但它包含的文件很少,我将其中的所有文件都移到了/usr/local/bin

我可以使用/usr/local/binfind /usr/local/bin ! -lname '../Cellar/*'中找到非Homebrew内容。

我不会将/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命令因此而停止工作,但在系统安装版本之前使用更新版本的命令并在任何地方使用相同的路径也很方便。

答案 3 :(得分:-5)

在我看来,你可以把你的脚本放在你想要的地方。除非你使用系统的specefic文件夹,否则它并不重要。我确实将我的/ scr保留在该文件夹的root权限上。它很有说服力,因为此文件夹中的所有脚本都需要root访问才能正确执行,我不希望最终用户查看该文件夹。