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

Mor*_*ive 58 macos bash terminal

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

Pau*_*l R 62

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

/usr/local/bin可能在默认路径中,但$HOME/bin肯定需要添加到PATH.


添加$HOME/bin到PATH:

PATH=${PATH}:$HOME/bin
export PATH
Run Code Online (Sandbox Code Playgroud)


Dav*_* W. 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.版本1.7.7 svn是在,/usr/local/bin而默认的1.6.18版本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
Run Code Online (Sandbox Code Playgroud)

Ant 1.9.1安装在/opt/ant(实际上/opt/apache-ant-1.9.1,但它象征性地链接到/opt/ant).我把所有的东西都链接/opt/ant/bin到了/usr/local/bin,所以它就在我的路上.

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

  • 我将`$ HOME/bin`放在我的路径前面,这样我就可以覆盖系统选择(我通过在不同的目录中提供多个版本的Perl和GCC来复杂化我的路径,并且默认为最新版本 - 那些出现在$ HOME/bin),但除此之外,我选择了与此类似的系统. (4认同)
  • 出于安全原因,我把它放在我的路径前面; 如果我不能信任我的bin目录,我就会遇到使用系统目录无法修复的问题.而且我可以覆盖其他人放在`/ usr/local/bin`中的垃圾^ H​​ ^ H ^ H ^ Hstuff.在以前的工作中,我不得不忽略`/ usr/local/bin`(不是在Mac上,本身),因为它是由MIS"维护"的,是NFS挂载的只读,并且通常包含过时的方式(如'过时')程序 - 你能说Perl 5.004吗? (2认同)

Lri*_*Lri 9

我用~/bin自己编写的可执行文件和脚本,以及我自己写/usr/local/bin的可执行文件和脚本.

/usr/local/bin通过使用自制,pip(以及gemnpm通过自制安装),对于缺省目标make install,并通过一些.pkg安装程序.

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

我可以找到非自制的东西/usr/local/binfind /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命令因此而停止工作,但在系统安装版本之前使用较新版本的命令并在各处使用相同路径也很方便.