- 论坛徽章:
- 0
|
小弟琢磨了下,大家一起学习下阿,有不足的地方请多多提出阿:
1.有很多shell,你熟悉几种?各个shell的home page在那?
(1)查看当前的shell: echo $0
(2)查看shell版本: rpm -qa shellname(bash,sh.....)
查看当前bash版本:bash --version
echo $BASH_VERSION
(3)查看安装了那些shell: cat /etc/shells
(4)常见shell分为两大主流:
sh:burne shell (sh)
burne again shell (bash)--大部分linux默认shell
csh:
c shell (csh)
tc shell (tcsh)
korn shell (ksh)
(5)ksh:http://kornshell.com/
bash:http://www.gnu.org/software/bash/
----------------------------------------------------
2.为什么说zsh是目前为止功能最大的shell?
注:Z是最后一个字母,所以说是终极shell
Zsh交互性是A+级别的,远高于其它Shell。
在编程方面,Zsh是A级的吧,也是最高的。只是不知道出于什么原因,Zsh被严重的低估了
功能:
1.强大的自动补全功能:可以自动补全命令、参数、文件名、进程、用户名、变量、权限符
2.路径别名。假设有一个很长的路径,例如/home/lighttpd/html,可以把这个路径命名为 ~WWW。
3.兼容主流shell,象bash,csh等
------------------------------------------------------
3.为什么说pdksh功能较弱?
pdksh ublic Domain Korn shell,这种shell是Korn shell的克隆版本,使用这种shell需要向AT&T(美国电报电话公司)付费,默认提示符为$
------------------------------------------------------
4.ksh88与ksh93有什么区别?
ksh88: /usr/bin/ksh88
ksh93:/usr/bin/ksh
ksh88不支持++算符
ksh93比ksh88新增加了很多内制的数学函数,好像ksh93支持浮点运算
------------------------------------------------------
5.为什么shell编程最好是用ksh?
ksh对bsh向上兼容,而且增加了csh的许多 好的特征,另外, 就是可以在除了UNIX平台上完美的运行,还可在OS/2,VMS,dos等平台上运行!
-------------------------------------------------------
6.你的系统都有那些shell?版本是多少?
(1)cat /etc/shells:
/bin/sh
/bin/bash
/sbin/nologin
/bin/tcsh
/bin/csh
/bin/ksh
(2)rpm -qa bash/tcsh/ksh
bash-3.2-21.el5
tcsh-6.14-12.el5
ksh-20060214-1.7
------------------------------------------------------
7.你知道POSIX?最新版本是多少?和你的shell有什么关系?
(1)posix表示可移植操作系统接口(portable operating system interface).自从unix诞生以后,很多商家都意识到了unix的商业价值,各个厂家纷纷开发自己的unix发行版,由于各个厂家对unix的开发各自为政,造成了unix的版本十分混乱,给软件的可移植性带来很大的困难,对unix的发展很不利。为了结束这种局面,IEEE开发了 POSIX,POSIX在源码级别上定义了一组最小的unix(类unix)操作系统接口.
(2)POSIX的目的是使应用程序源代码可以在兼容POSIX的操作系统上移植。理想的目标是应用程序移植到另一个操作系统只需要重新编译就可以运行。 POSIX最后一个字母“X”表达了这种超乎操作系统差异的理想。目前并没有实现这种理想:从操作系统看,由于目标、要求、理念、条件的差异,并不是所有的操作系统都实现100%POSIX兼容;从应用程序看,很多代码编写使用了特定操作系统支持的调用,并没有很好地使用POSIX接口。但是,很显然,使用POSIX接口的应用程序在兼容POSIX的操作系统间移植将是很轻松的事情
(3)POSIX标准是一个处于不断发展之中的庞大体系,
包括:
1003.1 系统API
1003.2 SHELL及工具
1003.3 POSIX符合性测试方法
1003.5 ADA语言接口
1003.13 标准化可移植实时应用环境AEP
其中,POSIX 1003.1系列标准是POSIX最主体内容,也是我们最关心的部分。该系列内容由如下主体定义以及一些扩展和增补组成:
1003.1 1988年通过,基本OS接口
1003.1b 1993年通过,实时扩展
1003.1c 1995年通过,线程扩展
1003.1d 1999年通过,实时扩展
1003.1j 2000年通过,高级实时扩展
1003.1q 2000年通过,时间数据流跟踪
(4)Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核
备注:
Unix是AT&T的注册商标,其他厂商必须付费才可以使用。
Solaris是SUN公司的UNIX系统,因为版权问题不能叫Unix。
Linux是GNU的操作系统项目,是一个类Unix操作系统
---------------------------------------------------
8./sbin/sh与/bin/sh有什么区别?
(1)Both /sbin/sh and /usr/bin/sh shells are Bourne shells.
(2)The difference is that /sbin/sh is statically linked and /usr/bin/sh is dynamically linked. There is also /bin/sh, however /bin is just a symbolic link to /usr/bin
(3)Dynamically linked binaries use shared libraries during their execution. This
makes them smaller in size and when libraries get updated, the binaries will automatically use the updated libraries.
(4)Statically linked binaries contain all the code within them. They do not use shared libraries at all. This makes them larger in size. The useful thing about statically linked binaries is that they can run all by themselves as they do not depend on shared libraries. If the system is "broken" and libraries
were removed, damaged, or /usr is not mounted, /sbin/sh can still be executed.
静态连接就是把需要的库函数放进你的exe之中,这样,在库函数文件不在的情况下,你的exe仍然可以使用到这个库函数。
动态连接就与之相反,库函数不在exe之中,这样在运行时,就必须加载响应的dll,否则无法正常运行
静态库在程序运行时就会装入内存,而动态库在调用的时候才装入
------------------------------------------
9.你分析过1000行以上的代码?
没
----------------------------------------
10.各种shell的变量名长度有何限制?
不能超过256个字符
 |
|