+ -
当前位置:首页 → 问答吧 → 菜鸟问个基本问题:shell,bash,zsh,console,terminal到底是什么意思,它们之间又是什么关系?

菜鸟问个基本问题:shell,bash,zsh,console,terminal到底是什么意思,它们之间又是什么关系?

时间:2009-12-25

来源:互联网

shell,bash,zsh,console,terminal到底是什么意思,它们之间又是什么关系?查了百度,wiki,还有一些资料,虽然感觉懂了一点,但还是没彻底,虽然是很菜的问题,可是还是想问个明白

作者: 何處不腥膻   发布时间: 2009-12-25

楼主的问题虽然很简单,但是不太好回答

作者: qiang_liu8183   发布时间: 2009-12-25

我自己也查了一些资料,每个分开来看,都能看明白,都知道是什么,但是想形成一个体系,却不明白它们之间的从属关系是什么

作者: 何處不腥膻   发布时间: 2009-12-25

bash和zsh分别是shell的其中两种,console和terminal是多义词,可在英文版维基百科上查到

作者: philacorns   发布时间: 2009-12-25

在我查到的资料中,有的说,bash和zsh分别是shell的其中两种,如同楼上所说的一样,然后又有的说console和terminal也类似于shell,那bash、zsh等和console、terminal又是什么关系呢?

作者: 何處不腥膻   发布时间: 2009-12-25

估计楼主在写论文

作者: carbonjiao   发布时间: 2009-12-25

引用:
作者: carbonjiao
估计楼主在写论文
呵呵,没有啊,就是想弄懂它们到底是什么意思

作者: 何處不腥膻   发布时间: 2009-12-25

bash ash zsh tcsh 这些都是shell,是脚本语言和命令执行环境,比如你在命令行输入 cp aaa bbb,接受你的输入并执行的就是shell。
而console(tty) fbterm xterm 这些则是终端程序,说白了就是字符型的屏幕加键盘。屏幕当然既可以执行shell程序,显示用户输入的信息,又可以显示其他的字符程序,比如wget ftp telnet ssh等等。
你要想在文本方式用键盘交互输入命令,就只需要一个终端,同时在终端里面运行一个shell(其实还是在计算机上运行,不是在终端内部运行,如果是虚拟终端的话,这个shell会是终端的子进程。如果是真实硬件终端如vt100型终端,则是通过串口与主机连接,shell是与这个串口关联的tty的子进程。目前的终端大多是虚拟终端了,我也是读大学的时候在图书馆用过物理终端)。
大的发行版一般用的是bash这个shell。
Unix/Linux不同于Windows,一台电脑可以同时开启很多的终端,每个终端都能同时接受不同用户的操作。是多人同时使用的操作系统。

作者: 没本   发布时间: 2009-12-25

我的理解是console是相对于图形界面来说的,就是说字符界面称为console,图形界面称为GUI
terminal如果指的是图形界面下的字符终端如xterm之类的东东的话,它应该是一个console的仿真软件,就象Windows里的cmd一样。
bash,zsh是字符界面(console)下的一个shell,负责解析shell命令和脚本,除了bash,zsh以外,还有ash,csh,ksh,sh,tcsh等等,如果系统上装了多个shell的话,可以用chsh命令来切换。
只是我的理解,不知道对不对~~

作者: waiting4you   发布时间: 2009-12-25

同意 LS ~~~~

作者: 月魄孤魂   发布时间: 2009-12-25

我总结下8、9楼的意思,还有我已知的资料,用不太严谨的语言说一下:
console相当于GUI下的terminal;
terminal相当于CLI下的console;
console、terminal都是一种字符界面;
terminal是一种特殊的console,是它的一个仿真软件;
一般console有6个,tty1-6
terminal有gnome-terminal,urxvt,mlterm等等

console、terminal相当于个外壳(或环境?),shell相当于在这个外壳下处理和人机交互相关的东西;
shell有bash,ash,zsh,tcsh等等

还没听说过怎么换console;
如果对terminal不满意,直接卸载这个terminal,然后再pacman安装一个
换shell可以修改/etc/passwd,把里面的/bin/bash换成你想要的shell

好了,上面是我总结的,语言不严谨,只是为了自己能理解,不知道对不对,大家纠正啊!

最新的总结在15楼!

作者: 何處不腥膻   发布时间: 2009-12-25

shell 是一个抽象概念,或者说抽象类,bash/zsh 等是 shell 的一种实现,或者说是一个具体类,它们都是一个程序,都能生成一个进程对象。
terminal——终端是一种设备,不是一个程序,一般说的就是能提供命令行用户界面的设备,典型的屏幕和键盘。图形终端一般不都称为终端。
shell 的一切操作都在计算机内部,只是把一些信息适当的输送到终端设备,同时还接收来自终端设备的输入。一般每个 shell 进程都会有一个终端关联,也可以没有。
一台显示器一个键盘本就只是一个终端,但很可能不够用,但又不想增加设备投入,虚拟终端应运而生,只要 Alt + Fn 切换即可。
gnome-terminal、xtern 等是一个程序,职责是模拟终端设备,和虚拟终端的区别表面上在于它以 GUI 形式的窗口出现,内部则是程序结构和系统控制结构有所不同,但本质上差不多。
console——显示系统消息的终端就叫控制台,什么拔插 U 盘,网线被拔之类,终端上就会打印出相应消息(archlinux 没有),扰乱用户当前操作,vi/vim 中的 Ctrl + l 就是对付这事情的。FreeBSD 只有 tty0 才是控制台,其它几个都只是普通终端,不会显示任何系统消息。Linux 默认所有虚拟终端都是控制台,都能显示系统消息,当然,用户可以改变设置。

作者: ch_fb   发布时间: 2009-12-25

shell除了处理人机交互,还执行脚本,是操作系统能正常运行的重要组成部分。你可以读读/etc/profile这个脚本,任何用户登陆时都要先执行它。你的用户目录/home/username/里面还有.profile .bashrc .bash_profile这类的脚本,你可以修改它们,让你每次登录时自动执行一些操作。比如在.bashrc里加一行 alias ll='ls -l'
每次登陆后,直接按ll就可以用长行方法列目录了。

作者: 没本   发布时间: 2009-12-25

lz自己在11楼的总结已经很接近了,不过,shell才是一个环境,直译外壳你自己也提到这个词了,console是一种设备,terminal这个名词会有岐义,看你说的是终端设备还是x下的虚拟控制台了,可以是一种设备或者用以模拟该设备的一个程序了。

作者: huntxu   发布时间: 2009-12-25

结合8、9、11、12、13、14楼,最新的总结:

终端(terminal,或者叫物理终端):
是一种设备,不是一个程序,一般说的就是能提供命令行用户界面的设备,典型的是屏幕和键盘,或其他的一些物理终端。
虚拟终端:
屏幕和键盘只是一个终端,可能不够用,又不想增加设备投入,就产生了虚拟终端。
gnome-terminal,urxvt,mlterm,xterm等等:
是一个程序,职责是模拟终端设备,和虚拟终端的区别表面上在于它以 GUI 形式的窗口出现,内部则是程序结构和系统控制结构有所不同,但本质上差不多。
控制台(console):
显示系统消息的终端就叫控制台,Linux 默认所有虚拟终端都是控制台,都能显示系统消息。
但有时专指CLI下的模拟终端设备的一个程序,和gnome-terminal,urxvt,mlterm,xterm等相同,只是CLI和GUI界面的区别。一般console有6个,tty1-6,CTRL+ALT+fn切换。还没听说过怎么换console

shell是一个抽象概念,shell的一切操作都在计算机内部,负责处理人机交互,执行脚本等,是操作系统能正常运行的重要组成部分
bash,ash,zsh,tcsh等是shell这个抽象概念的一种具体的实现,都是一个程序,都能生成一个进程对象。
如果想换shell的程序,可以修改/etc/passwd,把里面的/bin/bash换成你想要的shell,或者用chsh命令来切换

shell与终端的关系:shell把一些信息适当的输送到终端设备,同时还接收来自终端设备的输入。一般每个shell进程都会有一个终端关联,也可以没有。

作者: 何處不腥膻   发布时间: 2009-12-25

shell就是蓝精灵,bash是蓝妹妹,zsh是聪聪,ash是蓝蓝,tcsh是笨笨,厌厌,乐乐,健健,灵灵,爱爱,美美等等,就这样。格格巫当然是M$

作者: linux701   发布时间: 2009-12-25

引用:
作者: linux701
shell就是蓝精灵,bash是蓝妹妹,zsh是聪聪,ash是蓝蓝,tcsh是笨笨,厌厌,乐乐,健健,灵灵,爱爱,美美等等,就这样。格格巫当然是M$
我一去不复返的小学时光啊

作者: 何處不腥膻   发布时间: 2009-12-25

console就是你碰得到的,人坐在電腦前面,手可以碰到鍵盤,螢幕...滑鼠.....這個樣子。
terminal可就不一定了,比如我我在遠方,連上我的電腦,這個叫terminal。
至於xterm,你在裡面打tty這個指令,看到pts就是terminal了,如果是console會顯示tty。
上面這兩個東西,跟bash之間的關係,應該是先進到console之後,在考慮你要用哪個東西,像bash zsh之類的東西選一個給你用,至於shell我想就是指bash這種東西。
像bbs ... ftp之類的東西,連過去,就不會是bash了,大概是這個樣子。

以上不知道講的對不對,如果有誤人子弟,請糾正一下。

作者: jiuny0209   发布时间: 2009-12-30

console不一定是屏幕和键盘,也可能是别的设备,比如嵌入式设备,通常会在kernel的启动参数中指定 root=/dev/ram console=ttyS0 ,这时候,console就变成串口设备ttyS0了,在设备不成直接连接显示设备时,就可以利用串口得到屏幕的输出,并利用串口来输入数据。

作者: 没本   发布时间: 2009-12-31