在unixshell上键入时会发生什么

在unixshell上键入时会发生什么,unix,sh,Unix,Sh,在unix shell上键入(不需要命令)时会发生什么?更具体地说,当您在shell上键入时,在后台会发生什么?您可以使用strace了解Linux上程序(例如/bin/bash或其他shell或任何其他程序)涉及的系统调用。使用免费(如GPL许可的)软件外壳,您可以查看其源代码以了解更多信息。您甚至可以使用调试信息编译它们,并使用调试器检查它们是否正常工作。您必须了解计算机系统体系结构才能真正了解发生了什么,但基本上您的计算机有两个级别,一个是硬件,另一个是软件 硬件被分解成很多东西,但最重要

在unix shell上键入(不需要命令)时会发生什么?更具体地说,当您在shell上键入时,在后台会发生什么?

您可以使用
strace
了解Linux上程序(例如
/bin/bash
或其他shell或任何其他程序)涉及的系统调用。使用免费(如GPL许可的)软件外壳,您可以查看其源代码以了解更多信息。您甚至可以使用调试信息编译它们,并使用调试器检查它们是否正常工作。

您必须了解计算机系统体系结构才能真正了解发生了什么,但基本上您的计算机有两个级别,一个是硬件,另一个是软件

硬件被分解成很多东西,但最重要的问题是键盘和屏幕。因此,如果你在键盘上打字,一定会有一些软件来显示你在屏幕上键入的内容。在现代系统(如此网页)中,它由(至少)两层软件处理

操作系统是一组底层的子系统,它们将所有部分连接在一起作为(大致上)服务,即打字服务、磁盘服务、网络服务、显示服务和许多其他更多的技术服务,通常与这些东西的相互对话有关

显示您在网页中键入的内容的最终软件级别(面向用户)由您使用的浏览器软件提供。操作系统将按键、鼠标单击等的值传递给浏览器,浏览器决定如何处理这些值

因此Unix命令行也有两层,操作系统级,协调服务(键盘到屏幕)。要想让您的按键与操作系统有任何联系,您必须启动一个设计用于接收和显示输入和输出的应用程序。当您在命令行上键入时,操作系统会向shell程序bash、ksh、zsh和其他程序发送按键

直到你按下回车键,shell才会做一些事情,基本上,当你按下回车键时,它知道要做的唯一一件事就是向后扫描并读取你输入的内容。它将假定您知道自己在做什么,并且您键入的是系统支持的有效命令。如果遇到被认为是shell特性的文本,它还有许多规则,如环境变量(${MyName})、管道
|
,它们帮助连接两个程序以将数据从左侧程序发送到右侧程序,以及许多其他特性

因此,您不想知道shell中具体发生了什么,所以答案是,操作系统正在从键盘获取活动,因为您必须运行shell(或其他程序)才能接受键盘的输入,所以操作系统会将这些按键值传递到正在运行的程序中

(鉴于您其他问题的性质,如果这太简单,我深表歉意;-(,但是…)


我希望这能有所帮助。

实际上,readline将终端置于非规范模式,并立即对每个字符做出反应。是的,听起来不错。我将其归类为子系统之一(由bash启动)。感谢分享。