我应该在哪里存储命令行应用程序?


46

当我下载命令行应用程序时,它们位于我的~/Downloads/目录中。但是我觉得这是放置命令行应用程序的地方。我应该在Mac OS X文件系统中的哪里存储命令行应用程序?

/Applications/也感觉错了,它更多地用于桌面应用程序。和/bin/声音多为属于OS X的应用程序


我同意您的观点,即直接将内容放在/ bin或/ Applications中通常是较差的形式。Patrix的答案是我在程序和脚本的常规命令行存储中看到的最规范的位置。
bmike


2
我看不到它们是重复的,因为链接的问题似乎更多地涉及到杂耍第三方的选择,而这纯粹是纯粹的-我手动下载的应用程序在哪里。
bmike

Answers:


44

由于OS X来自Unix传统,因此您将需要将系统文件存储在/usr/local/bin本地属于系统而不是特定用户的命令行应用程序和脚本中。您可能需要先通过运行以下命令创建此目录:

sudo mkdir -p /usr/local/bin

您可以通过运行以下命令将任何命令行应用程序移至该文件夹:

sudo mv my-binary /usr/local/bin/

为了确保这/usr/local/bin是终端中标准搜索路径的一部分,请检查的内容,/etc/paths并在必要时添加它:

grep -w /usr/local/bin /etc/paths || sudo sh -c 'echo /usr/local/bin >> /etc/paths'

一些用户为用户级脚本创建了第二个目录,但这更取决于个人喜好。

我通常在每个用户文件夹中创建一个bin目录,然后将其从Finder中隐藏-但是您可以自己决定是否要隐藏它:

 mkdir ~/bin
 chflags hidden ~/bin

在这种情况下,您将希望通过修改Shell启动脚本(~/.bash_profile对于bash是标准Shell)来使每个用户的路径都包含此位置。

 export PATH=$PATH:~/bin

或者在运行每个应用时对其进行硬编码。


3
这绝对是最好的建议,也是我要问任何人的建议。我仅添加两件事:1)/etc/launchd.conf也可能是需要添加路径的地方,2)尽管我将/ usr / local /用于通过homebrew自己的shell脚本安装的Unix utils ,有一个〜/ Dropbox / bin /,我也将它添加到$ PATH中,所以我在所有Mac上都拥有所有自定义的shell脚本。但是除了/ usr / local / bin /之外,我没有这样做。
TJ Luoma

/ usr / local / bin是用户脚本传统UNIX站点,它可以访问系统上的任何其他用户。将脚本放置在此处将毫不费力地将脚本放入所有用户的$ PATH中。但是我相信Mac方式,因为大多数Mac具有一个用户,所以要创建一个~/bin目录,使用使其不可见chflags uchg ~/bin,并将其添加到用户中,~/.bash_profile以使其成为用户$ PATH的一部分。~/bin是安全性和迁移的优越位置。否则,您必须记住留在/ usr / local / bin中的内容。而且ln -s ~/bin ~/Dropbox/还不错。
chillin

7

考虑创建一个/opt目录,这是定制Unix软件按照惯例出现的另一个位置。


5
/opt/对于完整的应用程序非常有用,而/usr/local/bin/对于独立的命令行脚本更合适。通常,最好/opt/在相关脚本的集合充当库的情况下使用(例如/opt/myscriptslib/bin/)。
2013年

感谢您的建议。我亲自创建了文件夹/ opt /来放置软件,然后为所有可执行文件建立了指向/ usr / local / bin的符号链接...然后,无需在路径环境变量中添加/ opt / myspecific-soft 。
рüффп
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.