dsy*_*nkd 29 shell terminal console command-line command-prompt
我发现自己可以互换地使用这些术语而不知道其中的区别.
所有这些条款之间的实际差异是什么?
cda*_*rke 23
是的,这些条款存在很多混淆.我会给它一个刺,但附带条件是这真的是语义,这些术语在日常用语中互换使用:
"Shell"是用于运行其他程序的任何程序的术语.它包裹着另一个程序,因此它的名字.因此,例如,Windows资源管理器是一个shell,即使很少有人会称它为一个.在我使用的所有语言和平台中,任何程序都可以是shell.
编辑:我没有定义"终端".它的名字来自与用户沟通的终点.具体来说,它是用于最终用户通信的打字机设备.今天它更通用,可以指一个伪终端(Linux中的pts ps -ef),这是一个由GUI管理的基于字符的会话.在Windows上,这将被称为"控制台窗口".
"控制台"在Windows和UNIX上是指特定但不同的东西.在UNIX上最初是tty(TeleTYpewriter,VDU是一个"玻璃电传打字机"),它被物理地插入到机器中,甚至不通过加密狗(我在UNIX上走了很长一段路).它是发送和接收启动和关闭消息的终端,以及诸如PANIC之类的警报.bash和Korn shell脚本都可以在没有TTY /控制台的情况下作为伪守护进程运行.
术语"控制台"经常与更准确的"标准输入","标准输出"和"标准错误"(stdin,stdout,stderr,来自C)相混淆.这些有时被称为流,并且默认为在大多数系统上被引导到终端.在UNIX上,它们是前三个文件描述符,在Windows上是前三个文件句柄,两者都是0,1,2.程序可以将它们引导到它具有适当访问权限的任何文件系统,但通常它不会 - 它通常从其父进程继承它们(并非所有操作系统都在过去这样做).
在Windows上,"控制台"程序是一个具有控制台窗口的程序,通常被错误地称为"DOS框".因此,cmd.exe是一个控制台程序,但perl.exe也是如此,python.exe也是如此(但不是pythonw.exe).
命令提示符是键入的邀请,由命令行解释器或CLI显示.按照UNIX上的惯例,它以除root之外的所有用户结束$,以#结尾.csh不遵循此约定并使用%.通常,Windows CLI上的提示以>结尾.在所有情况下,这些都可以由用户改变.
我相信Windows上cmd.exe的快捷方式和窗口标题具有"命令提示符"标签,因为它可以访问命令提示符.我有一本名为"Windows命令行"的Microsoft Press书,上面写着"命令行是......通过命令shell窗口访问的".所以即使是微软也会混淆他们
因此,cmd.exe是一个shell和一个CLI,以及一个控制台程序.sqlplus是一个CLI而不是一个shell,在Windows上它是一个控制台程序.Windows资源管理器是一个shell,但不是CLI或控制台程序.Bash和Korn shell都是具有CLI的shell,可以从控制台运行,但不仅限于此.
| 归档时间: |
|
| 查看次数: |
24502 次 |
| 最近记录: |