在Unix标准目录下放置自定义可执行文件或脚本?[关闭]


79

如果我有一个自定义的Shell脚本或程序,是我自己创建的或从Web上下载的,并且希望能够从CLI执行,那么是否存在将其放入Linux / Unix目录结构的标准位置?

/usr/bin ?
/usr/local/bin ?
/usr/lib ?
/usr/sbin ?
/bin ?
/sbin ?
/var ?

我通常将其放在我的〜/ bin文件夹下,并将其放在PATH中,但看起来并不干净。每次下载新程序时,都必须再次将其放入PATH。


17
我建议man hier
Greg Hewgill

4
如果〜/ bin在PATH上,那么放入〜/ bin的所有程序也应该在路径上...这是什么意思,您必须再次将其放在PATH上?
tpg2114'2

我同意@ tpg2114,它~/bin是用户拥有的Shell脚本的理想位置。
Niklas B.

我将程序放在另一个子文件夹中:〜/ bin / xyz,〜/ bin / abc。因此,我必须将每一个都放在PATH中。
edja 2012年

1
无论您放置在哪里,都必须执行相同的操作。如果放置/ usr / bin / xyz,则还必须将其添加到路径中。
tpg2114 '02

Answers:


87

/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在幕后为您做这件事,还有更多其他事情。)


3
作为Mac用户的提示:如果选择“〜/ bin”并且不想在i Finder中显示此目录,则可以使用SETFILE(1)使它不可见:´setfile -a V〜/ bin invisible和“ setfile -av〜/ bin”可再次显示。请注意,这需要Xcode工具
亨里克

谢谢。还记得sbin的sudoers。
m3nda 2015年

@tripleee:是否存在用于脚本(bash,perl等)的事实上的标准目录?我在想例如〜/ etc?关键是您不会以与脚本和二进制文件相同的方式使用cvs / ..进行备份/跟踪。
phs,2015年

2
@phsbin适用于各种可执行文件,脚本或适当的二进制文件。如果您希望它们受直接版本控制,则将所有控件置于bin版本控制中当然是一种选择。尽管更常见的是,您对每个或至少每个不同的组都有一个单独的项目。发布新版本时,请将其安装到自己的中bin。或者,如果您认真对待狗食和/或一生中没有太多惊喜,请在您的开发版本中添加符号链接bin
2015年

谢谢,我做了ln -s / usr / local / bin / root /,以便更好地跟踪可执行文件并遵守两个标准;)
capitano666 '16

17

根据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/binPATH则放置。)

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.