Linux与Windows的程序文件等效吗?


179

在Windows下,大多数应用程序和应用程序数据都存储在称为C:\Program Files(有时为C:\Program Files (x86))的特殊目录中。与此路径等效的Ubuntu / Linux是什么?哪有一个?


2
如果您想知道特定软件包的文件在哪里,可以使用Synaptic软件包管理器。只需搜索软件包,然后查看其安装文件。
2011年

6
我认为这个问题将因需要同等的理由而得到改善。例如,“让我看看我已经安装了什么并且可以运行什么”和“我试图找到该软件的保存游戏,所以我可以摆弄”之间是有区别的。甚至“我怀疑该程序可以调整的一些设置文件/ ini文件”。这些全都是“程序文件”的问题,但是这里有不同的答案。
Nanne

4
相关(但可能不应该被认为是重复的):如何理解Ubuntu文件系统布局?
伊利亚·卡根

Answers:


104

/bin并且/usr/bin是启动程序的脚本所在的位置。不过,“程序文件”的直接等效项可能是/usr/share请参见文件系统层次结构标准)。该目录包含大多数程序的各种支持文件。

Nautilus显示/ usr / share

但是,可能没有直接的等效项,例如,因为库文件在系统中共享(在中/lib),并且选项是用户指定的(在用户的主目录中)或普遍位于中/etc

因此,通过deb文件,存储库或内部版本安装程序可能会将文件放置在所有这些位置。

[EDIT]另外,还有/sbin/usr/sbin。再加上/usr/local/bin/opt/bin甚至/usr/games/。所以绝对不是直接比较c:\program files


4
怎么/opt样 我已经看过以前以与相似的方式拥有许多(通常是封闭源代码或基于应用程序的)程序Program Files
Kupiakos

似乎就是这样,Ubuntu软件中心肯定在那里提供了它的游戏。但是即使那样,也很难直接比较,是吗?这些天可能最接近的东西。
Scaine

有关目录的用途,请参见askubuntu.com/a/294492/41499/opt
Gerhard Burger 2013年

/usr/local/bin是用户/公司可能不常用的软件的半公共位置。
马克·斯图尔特

这个操作系统比Windows更好吗?我切换到它尝试它是网络开发的魅力。但是我不明白那些层次结构的东西……我已经安装了PhpStorm,它现在位于1238128文件夹中..
Toma Tomov

84

后一个答案 -我为初学者创建了一个路线图。如果他们正在寻找文件但不知道在哪里寻找,则可以使用地图进行大致导航。您可以在此处下载高分辨率PNG 。您可以在此处找到相关的帖子。如果时间允许,我会不断更新文件和帖子,并附上有用的评论。


6
此答案被忽略,它应该位于顶部。
Voldemort

83

编辑:另请参见下面的d4nyll答案 ,以获取出色的,适合初学者的地图!

请阅读以下我的答案,以获取有关PATH环境变量是什么,.desktop文件是什么以及如何使用各种linux命令查找特定程序的更多信息。

原始答案:


没有简单的答案。

/bin/usr/bin/usr/share

如其他答案所述,您可以在/bin或下找到大多数可执行文件/usr/bin,并且在中安装了支持文件/usr/share

/usr/local/opt

但是,Ubuntu在其中安装了更多目录。该PATH变量确定在哪里搜索输入的命令,它可能会为您提供线索,我的看起来像(echo $PATH在终端中):

/usr/local/cuda/bin:/usr/local/texlive/2012/bin/x86_64-linux:/usr/games:/home/gerhard/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

如您所见,某些软件已安装在其中,/usr/local并具有自己的目录和bin。安装许多程序的另一个地方是/opt。这些位置的属性由Filesystem Hierarchy Standard解释,这是一本很好的书。不幸的是,和之间的区别/opt/usr/local没有得到很好的解释,unix stackexchange上的某个人有一个更详尽的解释:

  • /usr/local是安装管理员通常通过使用make命令构建的文件的位置。这样做的目的是避免与属于操作系统一部分的文件发生冲突,否则这些文件可能会被覆盖或覆盖本地文件。例如。/usr/bin/foo是操作系统的一部分,/usr/local/bin/foo是本地替代品,
  • /opt是一个目录,用于将未捆绑的软件包安装在各自的子目录中。它们已经由独立的第三方软件发行商提供了完整的软件包。例如,someapp将安装在中/opt/someapp,其命令之一将在/opt/someapp/bin/foo[然后通常在中的bin目录之一中建立符号链接PATH,或者从桌面文件调用该程序(请参见下文)]。

查找特定的程序或命令

.desktop 档案

要找出特定程序的安装位置,可以执行许多步骤。首先,您需要找到它的.desktop文件。桌面文件类似于Windows中的快捷方式,对于系统应用程序,它们位于中/usr/share/applications。仅适用于当前用户的应用程序的桌面文件位于中~/.local/share/applications。以具有桌面文件的Google Chrome为例,/usr/share/applications/google-chrome.desktop并查找以开头的行Exec=,这确定了如何启动Google Chrome。它说:

Exec=/opt/google/chrome/google-chrome

因此,您知道Google Chrome已经存在/opt

现在适用于位于的Mozilla Firefox /usr/share/applications/firefox.desktop。它只是说

Exec=firefox %u

最初,这似乎并没有多大帮助,但随后您意识到firefox必须将其放在PATH变量中的目录中(最有可能是a bin),然后我们可以对其进行查找(请参见下文)。

查找命令

要查找命令,你可以使用以下的一种或多种:typewhichwhereis(我已经包含了链接到他们的手册页在线)。

  • type:它描述命令,并指示如果用作命令名将如何解释它。命令的可能类型为:

    1. 别名(shell别名)
    2. 功能(外壳功能)
    3. 内置(shell内置)
    4. 文件(磁盘文件)
    5. 关键字(shell保留字)

    (类型本身是内置的shell,请与type type:P 一起尝试)

    执行type firefox给我们

    firefox is /usr/bin/firefox
    

    这是我们想知道的

如果命令是文件(已使用进行检查type),则还可以使用:

  • 其中:显示命令的完整路径,

    执行which firefox给我们

     /usr/bin/firefox
    
  • whereis:找到命令的二进制文件,源文件和手册页文件。

    执行whereis firefox给我们

    firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz
    

奖金

您可以使用进行/usr/bin/firefox更仔细的检查ls -l /usr/bin/firefox,这样可以:

/usr/bin/firefox -> ../lib/firefox/firefox.sh*

看来,/usr/bin/firefox“仅”是指向脚本的符号链接/usr/lib/firefox/firefox.sh。如果检查脚本,则会发现该脚本调用/usr/lib/firefox/firefox
您现在可以安息了:)


很酷的答案。一个问题,什么是符号链接?Windows快捷方式是否等效?
Quazi Irfan

@iamcreasy谢谢!是的,它们是一种捷径,但其主要目的是避免文件复制。Windows快捷方式更具有可比性。桌面文件,可用于创建例如开始菜单项。
Gerhard Burger 2015年

为什么有人在符号链接上使用.desktop文件,反之亦然?
Quazi Irfan 2015年

1
@iamcreasy在.desktop文件中,您可以添加其他信息,例如描述和图标(请参见此处的示例:standards.freedesktop.org/desktop-entry-spec/latest/apa.html),它是一个“常规”文件。符号链接是仅链接到另一个文件的“特殊”文件。我觉得这很难好好解释一下,但也许你可以在这里找到一个更好的答案:superuser.com/questions/253935/...
格哈德·伯格

18

没有单个目录与Program Files文件夹完全等效。Linux安排事物的方式与Windows有很多不同。

在Windows中,我们安装的每个程序在Program Files目录中都有其自己的目录。在该目录中,将为不同类型的文件创建其他子目录。子目录没有固定的结构。程序自己决定要调用每个目录的内容以及要放置的位置。

但是在Linux中,当安装了程序时,会将不同类型的文件复制到不同的位置。可执行文件复制到/ usr / bin,库文件复制到/ usr / lib,文档复制到/ usr / man/ usr / info/ usr / doc中的一个或多个。如果有配置文件,它们通常位于用户的主目录或/ etc中


是否有任何理由根据文件的目的而不是根据文件所属的应用程序对文件进行分组?从系统管理员的角度来看,“ Unix文件分组样式”通常更方便吗?
jojman

1
并不是的。我认为这是他们的设计选择。尽管它确实使制作诸如“ man”,“ info”之类的实用程序或许多其他依赖此文件结构的实用程序成为可能。例如,“ man”知道在哪里可以找到每个命令的文档。如果没有标准的文档位置,则无法工作。
binW

10

C:\Program Files文件夹将/usr/bin在Ubuntu中。/bin看起来更像C:\windows

在文件系统层次结构手册页中

/bin      This directory contains executable programs which are needed  in
          single user mode and to bring the system up or repair it.
/usr/bin
          This is the primary directory  for  executable  programs.   Most
          programs  executed  by  normal  users  which  are not needed for
          booting or for repairing the system and which are not  installed
          locally should be placed in this directory.

Ubuntu具有与Windows不同的结构。Ubuntu说,几乎所有应用程序都放在一个目录中/usr/bin。Windows将创建一个新文件夹,例如Mozilla Firefox,并在其中添加配置,可执行文件,DLL,图像等。Ubuntu将它们拆分,可执行文件放入/usr/bin,系统范围内的配置/etc,共享对象在/usr/lib,映像在/usr/share,...


5

Linux“程序文件”在整个层次结构中。这可能是对/usr/bin/bin/opt/...,或在其他目录。

我认为您将找到一些与您的应用程序相关的文件。然后,我对如何查看程序安装中安装的文件有了一个想法。

  1. synaptic通过sudo apt-get install synaptic在终端上发行安装。
  2. 查找所需的软件包,在搜索文本输入中进行搜索。
  3. 右键单击该软件包,然后选择Properties
  4. 移至Installed File标签。结果与相同dpkg -L package_name
  5. 在这里,您会找到该软件包安装的所有文件。

这是因为linux根据类型将已安装的文件分别移动到目录中。

  • 可执行文件转到/usr/bin/bin
  • 图标转到/usr/share/icons或打开~/.local/share/icons本地。
  • 整个应用程序(便携式)/opt
  • 快捷方式通常/usr/share/applications~/.local/share/applications
  • 有关文档 /usr/share/doc
  • 库/模块上 /usr/lib

和许多其他目录。(CMIIW,接受更正)


3

在这个答案中,当我说Unix时,我指的是Unix以及类似Unix的操作系统。

Ubuntu实际上并没有一个程序文件夹,其中包含每个程序的所有数据。在Unix和类似Unix的操作系统中,“一切”都是文件,甚至包括终端命令。它们也是文件。Unix处理程序的方式可能非常混乱,并且同时组织。

程序的图标存储在/ usr / share / icons / *中,程序可执行文件通常存储在/ usr / bin,/ bin和其他带有bin目录的位置(bin是obv的二进制缩写)。程序依赖的库位于/ lib中。

因此,最终不会得到一个包含一个程序的所有数据的目录,而是该程序的数据散布开了。虽然起初看起来似乎很杂乱无章,但它允许共享诸如库和图标之类的标准内容。

多亏了每个文件的权限,老实说,将所有内容都作为一个文件的想法非常出色。它使Unix MUCH比其他操作系统更安全。


3

Linux和Windows程序的安装方式完全不同。

Windows中的常见模式是程序。或一堆程序,来自一个供应商进入C:\ programs \ vendor或类似的目录中自己的子目录。

在Linux中,您的文件会根据其功能在特定的子目录之间拆分。有用于库,图标,手册页,日志文件,配置等的目录。您可以使用其中一些,但是系统将管理所有这些。它们没有耦合在一起,而是与其他程序中的类似文件一起存在。

因此,在常规的Linux实现中,没有真正等同于Windows目录结构的东西。



-2

在看/bin/usr/bin和其他任何表示bin

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.