如果我有一个自定义的Shell脚本或程序,是我自己创建的或从Web上下载的,并且希望能够从CLI执行,那么是否存在将其放入Linux / Unix目录结构的标准位置?
/usr/bin ?
/usr/local/bin ?
/usr/lib ?
/usr/sbin ?
/bin ?
/sbin ?
/var ?
我通常将其放在我的〜/ bin文件夹下,并将其放在PATH中,但看起来并不干净。每次下载新程序时,都必须再次将其放入PATH。
如果我有一个自定义的Shell脚本或程序,是我自己创建的或从Web上下载的,并且希望能够从CLI执行,那么是否存在将其放入Linux / Unix目录结构的标准位置?
/usr/bin ?
/usr/local/bin ?
/usr/lib ?
/usr/sbin ?
/bin ?
/sbin ?
/var ?
我通常将其放在我的〜/ bin文件夹下,并将其放在PATH中,但看起来并不干净。每次下载新程序时,都必须再次将其放入PATH。
~/bin
是用户拥有的Shell脚本的理想位置。
Answers:
/usr/local/bin
专门为此目的而存在,用于系统范围的安装。供您自己私人使用,~/bin
是事实上的标准。
如果要将每个二进制文件保留在其自己的子目录中,则可以执行此操作,然后将符号链接添加到已存在的目录中PATH
。因此,例如
curl -o $HOME/downloads/fnord http://fnord.example.com/script.exe
ln -s $HOME/downloads/fnord $HOME/bin/
提供$HOME/bin
在您的中PATH
。(有诸如此类的工具stow
在幕后为您做这件事,还有更多其他事情。)
bin
适用于各种可执行文件,脚本或适当的二进制文件。如果您希望它们受直接版本控制,则将所有控件置于bin
版本控制中当然是一种选择。尽管更常见的是,您对每个或至少每个不同的组都有一个单独的项目。发布新版本时,请将其安装到自己的中bin
。或者,如果您认真对待狗食和/或一生中没有太多惊喜,请在您的开发版本中添加符号链接bin
。
根据Unix的不同,这可能会略有不同。我在这里假设使用Linux(尽管这可能适用于OSX)。根据文件系统层次结构标准(FHS)(从Linux Standard Base工作组获得的链接):
该
/usr/local
层次结构供系统管理员在本地安装软件时使用。更新系统软件时,必须确保它不会被覆盖。它可用于可在一组主机之间共享但在中找不到的程序和数据/usr
。必须将本地安装的软件放置在内部
/usr/local
,/usr
除非安装了本地安装的软件以替换或升级中的软件/usr
。
/usr/local/bin
默认情况下通常在路径上。
请注意,您只应将可执行文件或指向它的链接放入其中/usr/local/bin
,其余文件可能必须放入/usr/local/lib
或中/usr/local/share
。
这/opt
棵树可能也很明智:
/opt
保留用于安装附加应用程序软件包。要安装在/ opt中的软件包,必须在单独的目录树
/opt/<package>
或/opt/<provider>
目录树中找到其静态文件,其中<package>
,描述软件包的名称<provider>
是提供商的LANANA注册名称。[...]
目录/ opt / bin,/ opt / doc,/ opt / include,/ opt / info,/ opt / lib和/ opt / man保留给本地系统管理员使用。程序包可以提供旨在由本地系统管理员放置(通过链接或复制)在这些保留目录中的“前端”文件,但是在没有这些保留目录的情况下它们必须能够正常运行。
(您可以从/opt/your-package/bin/executable
进入自己的链接/opt/bin
,如果还不存在/opt/bin
,PATH
则放置。)
man hier
。