Linux等同于C:\ Program Files?


64

我知道在Windows以及Linux和Unix中,可以在任何目录中安装程序|软件。同样,如果使用发行版的打包系统安装了软件包,则会将文件放置在正确的位置。

但有时,软件安装会提示您放置文件的路径。如果是Linux发行版,则此默认位置(C:\Program FilesC:\progra~1等效位置)在哪里?各种发行版本是否有所不同?如果是的话,这个地方将是RHELSuseUbuntu

Answers:


60

Linux文档项目Linux文件系统层次结构的描述,他们解释不同的文件夹和它们(这部分的历史)的意义。

正如xenoterracide已经指出的那样/bin/opt它们是可以在Windows上与“程序文件”进行比较的标准目录。

/bin包含几个有用的命令,它们对系统管理员和非特权用户都有用。它通常包含像贝壳bashcsh等....常用的命令一样cpmvrmcatls

引自TLDP

/opt保留用于不属于默认安装的所有软件和附加软件包。例如,通常在此处找到StarSuite,Kylix,Netscape Communicator和WordPerfect软件包。

引自TLDP


9
/ opt是否仅用于存储库中未包含的软件包?inkscape,gimp,rhythmbox等的应用程序文件夹位于/ usr / share中。难道不是等效的吗?
c76c3r8c42b347r8 2011年

5
有关文件系统层次结构(FHS)的更多最新信息,请参见linuxfoundation.org/en/FHS(注意:该站点目前处于关闭状态,但应尽快恢复)。
jw013 2011年

@Toxicbits:至少在/ opt中的Gentoo上有二进制软件包-特别是由于非标准文件系统层次结构而无法安装到/ usr的二进制软件包。
Maciej Piechotka 2011年

TLDP看起来很棒!好吧,顺便说一句;第一次看到TLDP时,我想:“时间太长了……没高峰?什么?”
EgeÖzcan

3
这是不正确的。/ bin仅包含可执行程序。Windows程序文件目录包含每个已安装应用程序的子目录,该子目录包含所有可执行文件,dll,数据文件以及该应用程序附带的所有其他内容。
psusi 2012年

45

没有直接的对等物。目录结构非常不同。在Windows下,每个安装的软件包/软件都有一个目录,其中包含与(例如C:\Program Files\MyProgram)有关的所有文件。在Linux下,根据文件类型和其他规则,每个软件都“分散”在许多目录中。

例如,我们可以检查与xscreensaver程序相关的不同文件的安装位置:

/etc/pam.d/xscreensaver
/etc/xscreensaver
/etc/xscreensaver/README
/usr/bin/xscreensaver
/usr/bin/xscreensaver-command
/usr/bin/xscreensaver-demo
/usr/bin/xscreensaver-gl-helper
/usr/share/X11/app-defaults/XScreenSaver
/usr/share/applications/xscreensaver-properties.desktop
/usr/share/doc/packages/xscreensaver
/usr/share/doc/packages/xscreensaver/README
/usr/share/locale/ca/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/da/LC_MESSAGES/xscreensaver.mo
/usr/share/locale/de/LC_MESSAGES/xscreensaver.mo
[ ... ]
/usr/share/locale/zh_TW/LC_MESSAGES/xscreensaver.mo
/usr/share/man/man1/xscreensaver-command.1.gz
/usr/share/man/man1/xscreensaver-demo.1.gz
/usr/share/man/man1/xscreensaver.1.gz
/usr/share/man/man6/xscreensaver-gl-helper.6x.gz
/usr/share/pixmaps/xscreensaver.xpm
/usr/share/xscreensaver
/usr/share/xscreensaver/glade
/usr/share/xscreensaver/glade/screensaver-cmndln.png
/usr/share/xscreensaver/glade/screensaver-colorselector.png
[ ... ]

别担心,通常当安装程序询问在哪里安装到,正确答案是下列之一://opt/usr/usr/local

如您所见,相当多的(1)个文件xscreensaver/usr根据一些简单的规则安装:可执行文件/usr/bin,手册页/usr/share/man,文档/usr/share/doc/packages/PROGRAMNAME等。

当安装程序要求安装时prefix通常它现在想要安装程序的基本路径。在我的xscreensaver示例中,它是/usr

一条简单的规则:/应仅包含引导系统所需的程序(如C:\windows\system32),/usr/local应仅包含该唯一计算机上所需的程序,/opt(2)具有非标准目录结构的所有可选程序和/usr所有标准软件。

在任何情况下,它存在一个标准定义详细所有这些规则:文件系统层次标准

(1)系统范围内的配置文件必须驻留在 /etc

(2)在Linux下相当陈旧


/opt是第三方软件的首选,已经/usr/local有相当长的一段时间了。
Steve-o

7
只是一种解释,/usr/share之所以称为“共享” ,是因为它在不同的体系结构(文档,脚本,图像)之间共享,而/usr/lib*用于与体系结构相关的文件(而不是可执行文件/usr/bin)。
eudoxos 2011年

12

Ususually, ,/bin/usr/bin/usr/local/bin/opt/bin。我想/usr/bin/opt/bin最接近于程序文件,因为他们通常是由系统管理员安装的非关键系统二进制文件,但与Windows这两个包含了包管理器安装的程序。/usr/local/bin非发行版打包软件在哪里。/bin适用于系统关键二进制文件,例如/bin/sh


为什么有四个选择?/bin/usr/bin/usr/local/bin/opt/bin。没有一个标准位置吗?我问的原因是因为我在几个VM上安装软件,并且默认位置占据了分区最大的位置。我想将分区空间更改为软件通常会去的目录,并且不要在所有VM中都放置不同的软件。
托马斯

1
该标准指定了多个位置,其中idk为什么路径名下降,但这是指向缓存的FHS的链接,该链接为这些内容提供了更多定义,实际上,它在很大程度上取决于您要安装的内容。此外,RHEL,Suse和Ubuntu也有所不同,因此它们可能会将同一事物放在稍微不同的位置。/opt例如通常用于专有软件。
xenoterracide 2011年

通常也...通常它们都在同一分区上...有时/usr/是一个单独的分区。
xenoterracide 2011年

1
有些人(例如,赫德计划)认为/bin/usr/bin歧视已经过时了。从历史上看,系统关键的东西将是/bin/lib,...(直接在根),而/usr(与/usr/bin/usr/lib,...)将在后面安装(可能通过网络),不是必需的基本系统功能。
eudoxos 2011年

1
@Thomas,/opt不应退出。过去,过去有些人认为将某些应用程序放置在与所有其他应用程序不同的位置是一个好主意。/bin在根分区上。由于在某些系统上,根分区上的空间有限,因此将非必需的二进制文件(即所有用户应用程序)移至/usr/bin
1

8

看一下man hier它是“文件系统层次结构的描述”。


3

正如其他人指出的那样,通过程序包管理器安装的程序分散在几个目录中。尽管通常可以找到二进制文件/usr/bin,但系统范围内的配置文件位于中/etc,依此类推。

如果未通过程序包管理器安装应用程序,则应将文件安装在不干扰程序包管理器的位置。这个地方是/usr/local

如果要求您提供安装路径,最常见的选择是 /usr/local/appname


3

键入echo $PATH在终端看到的路径(S)的外壳看起来在找到的命令。它会按照打印顺序检查文件。


1
这不符合OP的要求。
Francesco Turco

1

好吧,您将找不到所有解决方案/binsbin因为它们主要包含系统命令(即系统使用的命令)。

/usr/bin可以理想地称为"Program Files"Unix世界。关于/opt很少选择使用该位置进行安装的软件包,这同样适用于使用/etc//var作为位置的软件包

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.