OS中的命令如何工作?

时间:2017-10-16 23:21:59

标签: linux macos operating-system

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

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

有些人在/sbin

有些二进制文件位于/usr/bin,如python。某些二进制文件位于/usr/local/bin,如node

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

其他操作系统是否像Linux或Windows那样管理不同,或者其他操作系统的工作基础也是如此?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

  

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

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