什么是Linux相当于Windows的程序文件?

在Windows下,大多数应用程序和应用程序数据都存储在称为C:\Program Files (有时是C:\Program Files (x86) )的特殊目录中。 什么是Ubuntu / Linux相当于这条路径? 还有一个吗?

/bin/usr/bin是启动程序的脚本所在的位置。 直接相当于“程序文件”但可能是/usr/share 。 该目录包含大多数程序的各种支持文件。

Nautilus显示/ usr / share

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

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

[编辑]和其他人一样,还有/sbin/usr/sbin 。 加/usr/local/bin/opt/bin甚至/usr/games/ 。 所以绝对不能直接比较c:\program files

没有简单的答案。

/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 。 这些位置的属性由文件系统层次结构标准解释,这是一个非常好的读取。 不幸的是, /opt/usr/local之间的差异没有得到很好的解释, unix stackexchange上的某个人有一个更详细的解释:

  • /usr/local是安装管理员构建的文件的地方,通常使用make命令。 我们的想法是避免与作为操作系统一部分的文件冲突,否则这些文件将被覆盖或覆盖本地文件。 例如。 /usr/bin/foo是操作系统的一部分,而/usr/local/bin/foo是本地替代方案,
  • /opt是一个目录,用于在各自的子目录中安装非捆绑软件包。 它们已经构建完整的包,由独立的第三方软件分销商提供。 例如someapp将安装在/opt/someapp ,其中一个命令将在/opt/someapp/bin/foo [然后通常在PATH中的一个bin目录中创建一个符号链接,或者程序是从桌面文件调用(见下文)]。

查找特定程序或命令

.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 

因此,您知道谷歌浏览器位于/opt

现在为Mozilla Firefox,它位于/usr/share/applications/firefox.desktop 。 它简单地说

 Exec=firefox %u 

起初这似乎没有多大帮助,但是你意识到firefox必须位于PATH变量中的目录中(很可能是bin ),我们可以查找它(见下文)。

查找命令

要查找命令,您可以使用以下一项或多项: typewhichwhereis (我已在其中包含指向其手册页的链接)。

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

    1. 别名(shell别名)
    2. function(shellfunction)
    3. 内置(shell内置)
    4. 文件(磁盘文件)
    5. 关键字(shell保留字)

    (type本身是一个builtin bash命令命令,请尝试使用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 

奖金

您可以使用ls -l /usr/bin/firefox检查/usr/bin/firefox ls -l /usr/bin/firefox ,这样可以:

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

看来/usr/bin/firefox是’only’的脚本/usr/lib/firefox/firefox.sh的符号链接。 如果检查脚本,则会发现脚本调用/usr/lib/firefox/firefox
你现在可以安息吧:)

编辑 :另请参阅d4nyll的答案,了解一个不错的路线图。

迟到的答案 – 我已经为初学者制定了路线图。 如果他们正在寻找文件但不知道在哪里查看,他们可以使用地图粗略浏览。 您可以在这里下载高分辨率PNG。 你可以在这里找到相关的post。 我会在时间允许的情况下不断更新文件和post,并加入有用的评论。

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

在Windows中,我们安装的每个程序都在Program Files目录中获得自己的目录。 在该目录中,为不同类型的文件创建了更多子目录。 子目录没有固定的结构。 程序自己决定他们想要调用每个目录以及他们想要放置什么的目录。

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

C:\Program Files夹在Ubuntu中是/usr/bin/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映像,…

Linux“程序文件”位于整个层次结构中。 它可能位于/usr/bin/bin/opt/...或其他目录中。

我想你会找到一些与你的应用程序相关的文件。 然后,我知道如何查看程序安装上安装的文件。

  1. 通过在终端上发出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 for local。
  • /opt上的整个应用程序(便携式)
  • 通常在/usr/share/applications~/.local/share/applications上的快捷方式
  • /usr/share/doc
  • /usr/lib上的库/模块

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

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

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

程序的图标存储在/ usr / share / icons / *中,程序可执行文件通常存储在/ usr / bin,/ bin和其他具有bin目录的地方(bin对于二进制文件来说是obv)。 程序所依赖的库位于/ lib中。

因此,您最终得不到包含一个程序的所有数据的目录,但程序的数据分散开来。 虽然起初这看起来非常混乱,但它允许共享标准的东西,如图书馆和图标。

由于每个文件的权限,一切都是文件的想法是诚实的。 它使Unix MUCH比其他操作系统更安全。

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

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

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

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

如果您安装自己的程序,我建议1个文件夹:

  • / opt

查看/bin/usr/bin以及其他任何说bin