当我为我的OS X编写我的bash脚本做一般事情时,我想知道哪里是保存它们的好地方。是否有一个目录我可以将它们全部放在自动拾取的位置?或者我应该创建自己的目录,然后从.profile或其他东西引用这个目录?
答案 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
表示我自己编写的可执行文件和脚本。
/usr/local/bin
,pip
(以及Homebrew安装的gem
和npm
)作为make install
的默认目标,并由某些人使用.pkg
安装程序。
我曾经有一个单独的目录,用于我自己没有编写的可执行文件和脚本,默认情况下没有放在/usr/local/bin
中。但它包含的文件很少,我将其中的所有文件都移到了/usr/local/bin
。
我可以使用/usr/local/bin
在find /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访问才能正确执行,我不希望最终用户查看该文件夹。