Unix标准目录放置自定义可执行文件或脚本?

时间:2012-02-06 22:42:08

标签: linux shell unix command-line directory-structure

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

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

我通常将它放在我的〜/ bin文件夹下并将其放在PATH中,但它看起来并不干净。每次我下载一个新程序时,我都要把它放在PATH中。

3 个答案:

答案 0 :(得分:76)

/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这样的工具可以为你做幕后工作 - 等等。)

答案 1 :(得分:16)

根据Unix的风格,这可能略有不同。我在这里假设Linux(尽管这可能适用于OSX)。根据{{​​3}}(从Filesystem Hierarchy Standard (FHS)获得的链接):

  

/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上,如果它尚未存在的话。)

答案 2 :(得分:-9)

好吧,我会使用~/bin(虽然我不是root用户),但关于$PATH你可以随时使用

export PATH=".:${PATH}"
# or 
export PATH="${PATH}:."

这样,实际工作目录始终位于$PATH。虽然它有一些安全问题......尤其是下载的脚本。