LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: 何處不腥膻

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

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

使用道具 举报

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

使用道具 举报

发表于 2009-12-25 14:37:43 | 显示全部楼层
lz自己在11楼的总结已经很接近了,不过,shell才是一个环境,直译外壳你自己也提到这个词了,console是一种设备,terminal这个名词会有岐义,看你说的是终端设备还是x下的虚拟控制台了,可以是一种设备或者用以模拟该设备的一个程序了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-25 15:18:10 | 显示全部楼层
结合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 16:10:12 | 显示全部楼层
shell就是蓝精灵,bash是蓝妹妹,zsh是聪聪,ash是蓝蓝,tcsh是笨笨,厌厌,乐乐,健健,灵灵,爱爱,美美等等,就这样。格格巫当然是M$
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-25 16:17:30 | 显示全部楼层
Post by linux701;2059223
shell就是蓝精灵,bash是蓝妹妹,zsh是聪聪,ash是蓝蓝,tcsh是笨笨,厌厌,乐乐,健健,灵灵,爱爱,美美等等,就这样。格格巫当然是M$


我一去不复返的小学时光啊
回复 支持 反对

使用道具 举报

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

以上不知道講的對不對,如果有誤人子弟,請糾正一下。
回复 支持 反对

使用道具 举报

发表于 2009-12-30 19:24:09 | 显示全部楼层
console不一定是屏幕和键盘,也可能是别的设备,比如嵌入式设备,通常会在kernel的启动参数中指定 root=/dev/ram console=ttyS0 ,这时候,console就变成串口设备ttyS0了,在设备不成直接连接显示设备时,就可以利用串口得到屏幕的输出,并利用串口来输入数据。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表