Linux 任何命令在操作系统中是如何工作的?

Linux 任何命令在操作系统中是如何工作的?,linux,macos,operating-system,Linux,Macos,Operating System,我使用osX,我很想知道当我键入任何命令时,它是如何工作的?操作系统如何知道在哪里可以找到二进制文件 在根目录中有一个/bin文件夹,其中包含cat、mv、mkdir等的二进制文件 有些在/sbin 一些二进制文件在/usr/bin中,比如python。一些二进制文件位于/usr/local/bin节点中 我的问题是,当我运行该命令时,操作系统如何知道从何处拾取二进制文件?为什么不是所有的二进制文件都放在一个位置,或者至少符号链接放在一个位置 其他操作系统的管理方式是否与Linux或window

我使用osX,我很想知道当我键入任何命令时,它是如何工作的?操作系统如何知道在哪里可以找到二进制文件

根目录中有一个
/bin
文件夹,其中包含
cat、mv、mkdir等的二进制文件

有些在
/sbin

一些二进制文件在
/usr/bin
中,比如
python
。一些二进制文件位于
/usr/local/bin
节点中

我的问题是,当我运行该命令时,操作系统如何知道从何处拾取二进制文件?为什么不是所有的二进制文件都放在一个位置,或者至少符号链接放在一个位置


其他操作系统的管理方式是否与Linux或windows不同,或者其他操作系统的工作原理也相同?

有一个PATH环境变量,就像Linux,甚至MSWin;PATH是由冒号(:)分隔的目录列表。您的终端窗口实际上运行的是bash,所以如果您使用linux,应该很熟悉它。bash依次搜索每个目录,直到找到可执行文件;如果找不到它,您应该得到“bash:commandUtyped:commandnotfound”消息。您应该能够输入“type commandUwantToType”来确定bash在哪里找到可执行文件;如果在“type”之后使用“-a”,bash将告诉您它找到命令的每个地方(散列、别名、函数、文件等)。使用“帮助类型”获取有关“类型”命令的更多信息

为什么不是所有的二进制文件都在一个地方,或者至少符号链接都在一个地方 放在一个地方


这与文件系统的层次结构有很大关系。例如,
/bin
包含系统在单用户或多用户模式下运行时使用的二进制文件<代码>/usr/bin/
包含通用实用程序和应用程序的二进制文件。是(部分Mac OS基于此OS)文件系统的层次结构。是一些优秀的文档。

Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许是或者会是一个更好的提问的地方。一些二进制文件和文件位于不同的位置,因为它们是关键的,并且在系统启动序列中需要更早,然后才能装载带有其他二进制文件的较大文件系统-例如,
fsck
。一些文件特定于一台机器,因此在
/etc
中,其他文件在具有相同基本操作系统的机器之间共享,以节省网络上所有机器上的磁盘空间,并且如果只需要在一个位置进行修补(例如
/usr/share/man
),则更新更容易。有些二进制文件由操作系统供应商提供,有些仅在本地安装(例如
/usr/local/bin
)。