当前位置: 首页>>技术教程>>正文


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

,

问题描述

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

最佳解决办法

/bin/usr/bin是启动程序的脚本。 “Program Files”的直接等价物可能是/usr/share。该目录包含大多数程序的各种支持文件。

filesystem,ubuntu

然而,可能并没有直接的等价物,因为例如库文件在整个系统中共享(在/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。这些位置的属性由Filesystem Hierarchy Standerd解释,这是一个很好的阅读。不幸的是,/opt/usr/local之间的区别不是很好解释,someone on the 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

所以你知道Google Chrome在/opt

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

Exec=firefox %u

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

查找命令

要查找命令,您可以使用以下一个或多个命令:typewhichwhereis(我已经在线提供了其手册页的链接)。

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

    1. 别名(shell别名)

    2. 函数(shell函数)

    3. 内建(shell内建)

    4. 文件(磁盘文件)

    5. 关键字(shell保留字)

    (键入本身是一个内置的bash命令命令,用type type:P来尝试)

    执行type firefox给我们

    firefox is /usr/bin/firefox
    

    这是我们想知道的

如果一个命令是一个文件(你使用type检查过),那么你也可以使用:

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

    执行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,这样可以:

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

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

编辑:另见d4nyll’s answer的一个很好的路线图。

第三种解决办法

晚回答 – 我已经为初学者制定了一个路线图。如果他们正在寻找一个文件,但不知道在哪里寻找,他们可以使用Map粗略浏览。您可以下载hi-res PNG here。你可以找到相关的帖子here。如果时间允许,我会继续更新文件和帖子,并将有用的评论结合起来。

filesystem,ubuntu

第四种办法

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

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

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

第五种办法

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

manual page of the filesystem hierarchy

/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中的system-wide配置,/usr/lib中的共享对象,/usr/share中的映像,…

第六种办法

Linux ‘Program Files’在整个层次结构中。它可能位于/usr/bin/bin/opt/...或另一个目录中。

我想你会找到一些与你的应用程序相关的文件。然后,我有一个关于如何查看安装在程序安装中的文件的想法。

  1. 通过在终端上发出sudo apt-get install synaptic来安装synaptic

  2. 找到你想要的软件包,搜索搜索文本输入。

  3. Right-click包,并选择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,接受更正)

第七种办法

在这个答案中,当我说Unix时,我的意思是Unix以及Unix-like操作系统。

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

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

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

由于每个文件的权限,所有文件都是一个文件的想法是非常明智的说实话。它使得Unix比其他操作系统更安全。

第八种办法

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

Windows中的常见模式是一个程序;或者一组程序,从一个供应商进入其在C:\ programs \ vendor或其他类似的子目录中。

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

所以在常规的Linux实现中,并没有真正的等价于Windows目录结构。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/356.html,未经允许,请勿转载。