当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 13 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : shell,bash,终端的区别
帖子发表于 : 2013-04-01 8:23 

注册: 2013-03-14 17:55
帖子: 6
系统: ubuntu 12.04
送出感谢: 0 次
接收感谢: 0 次
请给我解释一下bash,shell,终端的区别。
我的理解是,终端承载shell,bash是一种shell


页首
 用户资料  
 
2 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2013-04-01 8:59 
头像

注册: 2012-11-06 12:43
帖子: 287
地址: 安徽合肥
系统: arch,ubuntu
送出感谢: 7
接收感谢: 0 次
那不就对了嘛

Sent from my MI 1S using Tapatalk 2


_________________
Luckily,I have google.

新手,请大家不吝赐教,十分感谢


页首
 用户资料  
 
3 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2013-04-01 9:23 
头像

注册: 2008-08-13 8:48
帖子: 26391
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
https://zh.wikipedia.org/wiki/%E7%B5%82%E7%AB%AF


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
4 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2013-04-01 18:49 

注册: 2012-03-31 3:29
帖子: 1554
送出感谢: 2
接收感谢: 121
你说的“终端”本身是个有歧义的词,到底是指“终端硬件设备”呢,还是“终端设备文件”,抑或是“仿真终端程序”??这几个不同的概念经常都被简称为“终端”。。。你用的“终端”是哪一个概念呢?你的选择决定“终端承载shell“这句话是否正确。

“bash是一种shell”也不严密,确切的表述应该是“bash是一种shell环境”--同一台linux(以多用户服务器为例)只有一个shell,你使用bash shell环境,另一个人可能使用c shell环境,如果“bash是一种shell”,那岂不是一台linux机器上会有几种shell?--shell也是一个会产生歧义的词。

学概念的时候最好表述严密些,概念一旦错误,也许会影响你以后某些操作的结果,最坏的情况可能会把系统搞趴下。。。


_________________
16.04-->14.04



_________________
评价: 3.7% bcxhzj
 
页首
 用户资料  
 
5 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2013-04-01 20:37 
头像

注册: 2008-07-30 23:21
帖子: 13427
地址: freebuilder@yeah.net
系统: Debian stable AMD64
送出感谢: 38
接收感谢: 127
taohunter 写道:
你说的“终端”本身是个有歧义的词,到底是指“终端硬件设备”呢,还是“终端设备文件”,抑或是“仿真终端程序”??这几个不同的概念经常都被简称为“终端”。。。你用的“终端”是哪一个概念呢?你的选择决定“终端承载shell“这句话是否正确。

“bash是一种shell”也不严密,确切的表述应该是“bash是一种shell环境”--同一台linux(以多用户服务器为例)只有一个shell,你使用bash shell环境,另一个人可能使用c shell环境,如果“bash是一种shell”,那岂不是一台linux机器上会有几种shell?--shell也是一个会产生歧义的词。

学概念的时候最好表述严密些,概念一旦错误,也许会影响你以后某些操作的结果,最坏的情况可能会把系统搞趴下。。。

楼主问的「终端」就是「终端」这个词,概念等诸位回答。
别想太多,终端就是一种硬件设备,接收程序输出字符并显示,接收键盘输入并传给程序。gnome-terminal 等程序属模拟终端,也叫伪终端,对 shell 来说,仍是硬件。
shell 是一种软件,解析用户输入,执行相应命令。
别想太多,bash 就是一种 shell。一般 Linux 发行版默认安装至少有两种 shell,bash 便是其一。


_________________
(2015-11-16 更新)适合 WM 的截图脚本
(2015-08-24 更新)Debian、Ubuntu 源列表说明
(2013-02-01 首发)文字如何绘出
▷▷ 【更 多 在 此】 ◁◁
箪食瓢饮随遇安,不求栋梁求参天。
【初韵】一门牛逼的编程语言。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2013-04-01 21:57 
头像

注册: 2008-07-24 11:33
帖子: 4793
地址: 郑州
送出感谢: 4
接收感谢: 92
:em01 就按LZ那样理解就成。
又不是编撰辞海的,抠那么细干甚。


_________________
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~


页首
 用户资料  
 
7 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2013-04-01 22:30 

注册: 2012-03-31 3:29
帖子: 1554
送出感谢: 2
接收感谢: 121
cuihao 写道:
:em01 就按LZ那样理解就成。
又不是编撰辞海的,抠那么细干甚。


一个作为外部设备存在的“终端”会"承载"shell么?如果一台设定好的linux机器不连接任何终端照样有kernel和shell在运行,例如只提供web访问服务,那么这时是谁在“承载”shell,总不会web应用直接去和kernel打交道了吧?如果我没理解错,人家楼主本身就是在问一个概念性的问题,所以才不厌其烦给他说明一下。你自己一直持有的恐怕也是完全错误的概念,就别不懂装懂啦。。。


_________________
16.04-->14.04


页首
 用户资料  
 
8 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2013-04-02 8:11 
头像

注册: 2008-07-24 11:33
帖子: 4793
地址: 郑州
送出感谢: 4
接收感谢: 92
taohunter 写道:
cuihao 写道:
:em01 就按LZ那样理解就成。
又不是编撰辞海的,抠那么细干甚。


一个作为外部设备存在的“终端”会"承载"shell么?如果一台设定好的linux机器不连接任何终端照样有kernel和shell在运行,例如只提供web访问服务,那么这时是谁在“承载”shell,总不会web应用直接去和kernel打交道了吧?如果我没理解错,人家楼主本身就是在问一个概念性的问题,所以才不厌其烦给他说明一下。你自己一直持有的恐怕也是完全错误的概念,就别不懂装懂啦。。。

=3= 呜,没有反驳的意思啦。窝鞠躬谢罪

那谈谈我对这些术语的看法吧:
“终端”是一种设备,用来直接获取输入、呈现输出。我以为,无论是模拟的终端还是物理终端,最终在系统里是用相同的方式交互的,对于程序大概是没有区别的。
“shell”呢,是这么一种程序,它可以与内核交互处理从终端得到的输入,并将输出传回终端

另外,对于“一个作为外部设备存在的“终端”会"承载"shell么”这个问题,我觉得照上面的理解,就自然是可以啦。因为,虚拟终端和物理终端在程序看来是一样的吧。

至于web应用的例子,我不认为程序非得通过shell和内核交互,我确实认为“程序是可以直接和系统内核打交道的”。shell 本身应该就是一种应用程序,不需要通过 shell 来和系统内核打交道(唔,这个例子貌似奇葩了点)。


_________________
求人不如求它仨: 天蓝的Wiki 屎黄的Wiki 绿
Site: CUIHAO.TK    Twitter: @cuihaoleo
Machine: Athlon64 X2 5200+ / 2x2GB DDR2-800 / GeForce GTS 450
AD: ~まだ見ぬ誰かの笑顔のために~


页首
 用户资料  
 
9 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2013-04-02 9:38 
头像

注册: 2006-02-10 16:36
帖子: 2805
系统: Xubuntu14.04/Deepin
送出感谢: 15
接收感谢: 28
真有意思!终端不就是提供人机交互的设备吗?


_________________
友帮拓,真难听。有没有接触官方的老大?给改了吧!
一直想找一个在linux下的Visual FoxPro/access桌面数据库。MUIBase还算是最相近的。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2013-04-02 17:43 

注册: 2012-03-31 3:29
帖子: 1554
送出感谢: 2
接收感谢: 121
cuihao 写道:
至于web应用的例子,我不认为程序非得通过shell和内核交互,我确实认为“程序是可以直接和系统内核打交道的”。shell 本身应该就是一种应用程序,不需要通过 shell 来和系统内核打交道(唔,这个例子貌似奇葩了点)。


只要是一个正常运行的linux/unix系统,shell永远都保护在kernel的外层,是把用户应用程序和内核隔离开的一个抽象层,其作用相当于一个”接口“。所谓”不需要通过 shell 来和系统内核打交道“其实是假象,作为应用程序,无论是交互式终端命令行操作还是web应用等不需要终端设备的操作其实都要通过shell才能访问内核,甚至连所谓的内核操作工具软件也不例外。

至于硬件概念上的终端设备对操作系统来讲是操作系统之外的外部设备。而shell是一个完整的操作系统的一部分,与终端是没有任何直接关系的,完全可以脱离终端设备”运行“,web应用的例子就说明了这一点。但一个正在运行的linux桌面系统如ubuntu中随时都会有支持诸如tty,pty等设备的内核模块在运行,所以当一个“终端”连接到系统时,这些内核模块就会通过shell将数据传送给应用层,通过使用终端的用户所选用的shell环境如bash,将相应的数据以特定的界面显示在用户的终端物理设备上。所以真正的“承载”shell的永远都是内核。只有把操作终端设备文件的那部分内核模块看成“终端”(这才是平时很多人的“感觉”),说“终端”承载shell才可以说是对的。

如果你愿意把shell理解成”应用程序“,虽然对我学习的操作系统/应用程序的概念有点“颠覆”,但还是你的权力。。。


_________________
16.04-->14.04


页首
 用户资料  
 
11 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2013-04-02 18:20 

注册: 2013-03-14 17:55
帖子: 6
系统: ubuntu 12.04
送出感谢: 0 次
接收感谢: 0 次
taohunter 写道:
你说的“终端”本身是个有歧义的词,到底是指“终端硬件设备”呢,还是“终端设备文件”,抑或是“仿真终端程序”??这几个不同的概念经常都被简称为“终端”。。。你用的“终端”是哪一个概念呢?你的选择决定“终端承载shell“这句话是否正确。

“bash是一种shell”也不严密,确切的表述应该是“bash是一种shell环境”--同一台linux(以多用户服务器为例)只有一个shell,你使用bash shell环境,另一个人可能使用c shell环境,如果“bash是一种shell”,那岂不是一台linux机器上会有几种shell?--shell也是一个会产生歧义的词。

学概念的时候最好表述严密些,概念一旦错误,也许会影响你以后某些操作的结果,最坏的情况可能会把系统搞趴下。。。




你说的很好,谢谢。
我说的终端就是 ctrl + alt +T 出来的那个,还有 ctrl+alt+(F1~F6)那个


页首
 用户资料  
 
12 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2013-04-02 21:25 
头像

注册: 2007-03-02 17:36
帖子: 7279
送出感谢: 3
接收感谢: 99
可以参见我签名第六章


_________________
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事


页首
 用户资料  
 
13 楼 
 文章标题 : Re: shell,bash,终端的区别
帖子发表于 : 2017-08-04 11:25 

注册: 2013-11-09 17:23
帖子: 1
系统: Ubuntu 12.04 LTS Srv
送出感谢: 0 次
接收感谢: 0 次
cuihao 写道:
taohunter 写道:
cuihao 写道:
:em01 就按LZ那样理解就成。
又不是编撰辞海的,抠那么细干甚。


一个作为外部设备存在的“终端”会"承载"shell么?如果一台设定好的linux机器不连接任何终端照样有kernel和shell在运行,例如只提供web访问服务,那么这时是谁在“承载”shell,总不会web应用直接去和kernel打交道了吧?如果我没理解错,人家楼主本身就是在问一个概念性的问题,所以才不厌其烦给他说明一下。你自己一直持有的恐怕也是完全错误的概念,就别不懂装懂啦。。。

=3= 呜,没有反驳的意思啦。窝鞠躬谢罪

那谈谈我对这些术语的看法吧:
“终端”是一种设备,用来直接获取输入、呈现输出。我以为,无论是模拟的终端还是物理终端,最终在系统里是用相同的方式交互的,对于程序大概是没有区别的。
“shell”呢,是这么一种程序,它可以与内核交互处理从终端得到的输入,并将输出传回终端

另外,对于“一个作为外部设备存在的“终端”会"承载"shell么”这个问题,我觉得照上面的理解,就自然是可以啦。因为,虚拟终端和物理终端在程序看来是一样的吧。

至于web应用的例子,我不认为程序非得通过shell和内核交互,我确实认为“程序是可以直接和系统内核打交道的”。shell 本身应该就是一种应用程序,不需要通过 shell 来和系统内核打交道(唔,这个例子貌似奇葩了点)。


我个人认为计算机领域还是要严谨一些的好,呃,仅代表我个人意见。我是做软件开发的,在中文社区搜到的资料要么是东搬西抄来的,要么写的含含糊糊,要么错误百出。唉,我们中文社区需要多努力啊。那个stackoverflow就非常棒,上面的回答也相对精准。我们的知乎也在朝着stackoverflow的方向在努力。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 13 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译