1. Shell的历史
Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令。Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell 脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。
由于历史原因,UNIX系统上有很多种Shell:
1.sh(Bourne Shell):由Steve Bourne开发,各种UNIX系统都配有sh。
2.csh(C Shell):由Bill Joy开发,随BSD UNIX发布,它的流程控制语句很像C语言,支持很多Bourne Shell所不支持的功能:作业控制,命令历史,命令行编辑。
3.ksh(Korn Shell):由David Korn开发,向后兼容sh的功能,并且添加了csh引入的新功能,是目前很多UNIX系统标准配置的Shell,在这些系统上/bin/sh往往是指向/bin/ksh的符号链接。
4.tcsh(TENEX C Shell):是csh的增强版本,引入了命令补全等功能,在FreeBSD、Mac OS X等系统上替代了csh。
5.bash(Bourne Again Shell):由GNU开发的Shell,主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,bash从csh和ksh借鉴了很多功能,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链接[38]。虽然如此,bash和sh还是有很多不同的,一方面,bash扩展了一些命令和参数,另一方面,bash并不完全和sh兼容,有些行为并不一致,所以bash需要模拟sh的行为:当我们通过sh这个程序名启动bash时,bash可以假装自己是sh,不认扩展的命令,并且行为与sh保持一致。
文件/etc/shells给出了系统中所有已知(不一定已安装)的Shell,除了上面提到的Shell之外还有很多变种。
# /etc/shells: valid login shells
/bin/csh
/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
用户的默认Shell设置在/etc/passwd文件中,例如下面这行对用户mia的设置:
mia:L2NOfqdlPrHwE:504:504:Mia Maya:/home/mia:/bin/bash
用户mia从字符终端登录或者打开图形终端窗口时就会自动执行/bin/bash。如果要切换到其它Shell,可以在命令行输入程序名,例如:
~$ sh(在bash提示符下输入sh命令)
$(出现sh的提示符)
$(按Ctrl-d或者输入exit命令)
~$(回到bash提示符)
~$(再次按Ctrl-d或者输入exit命令会退出登录或者关闭图形终端窗口)
本章只介绍bash和sh的用法和相关语法,不介绍其它Shell。所以下文提到Shell都是指bash或sh。
[38] 最新的发行版有一些变化,例如Ubuntu 7.10的/bin/sh是指向/bin/dash的符号链接,dash也是一种类似bash的Shell。
$ ls /bin/sh /bin/dash -l
-rwxr-xr-x 1 root root 79988 2008-03-12 19:22 /bin/dash
lrwxrwxrwx 1 root root 4 2008-07-04 05:58 /bin/sh -> dash
分享到:
相关推荐
本项目为基于Java和Shell语言开发的study-project设计源码,包含141个文件,具体包括82个Java源文件、27个XML配置文件、10个JSON文件、4个Shell脚本文件、4个YAML配置文件、4个SQL文件、2个Git忽略配置文件、2个属性...
1. 首个字符必须为字母(a-z,A-Z) 或者_ 2. 中间不能有空格,可以使用下划线(_) 3. 不能使用其他标点符号 ####变量赋值 a=123 b=$a ####变量取值 普通的变量赋值和输出 c=$a+$b echo $c 输出结果 123+123 shell...
在"shell_study-master"这个文件夹中,很可能包含了一系列关于Shell脚本的示例、练习和教程。这些文件可能包括: 1. **脚本文件**(`.sh`扩展名):展示了各种Shell命令和语法的实际应用。 2. **解释文档**(`.md`或...
标题中提及的“LPIC-1 Linux Professional Institute Certification Study Guide-3rd--2013”表明这是关于LPIC-1认证的学习指南的第三版,发布年份为2013年。LPIC-1是Linux专业学会(Linux Professional Institute)...
"shell_study.rar"这个压缩包文件显然聚焦于Shell的学习材料,它可能包含了教程、脚本示例或者练习题,帮助用户深入理解Shell编程。 Shell的主要功能包括执行系统命令、自动化任务、文件管理以及通过脚本进行复杂...
K-shell X-ray emission from a Cu nanowire target irradiated by an ultraintense femtosecond laser pulse is studied using an elliptically bent quartz crystal and imaging plate. The designed bent crystal...
《LPIC-1 Study Guide 2nd》是针对Linux Professional Institute Certification(LPIC)一级认证的详尽学习指南,由Roderick W. Smith撰写,第二版内容全面更新,覆盖了LPIC-1考试的所有核心知识点。这本书由Wiley ...
在“my self-study”这个自学项目中,我们可以看到几个关键元素:标签为“数学”,以及四个文件或文件夹——hotkey、myaccount、shell-program和C++.txt。这些元素暗示了学习者可能正在探索不同的知识领域,包括基础...
"人性化解析shell脚本,快速入门sh、bash、shell入门" Shell脚本是Linux操作系统中的一种编程语言,用于自动化系统管理和任务执行。本文档旨在快速入门Shell脚本,帮助读者快速掌握Shell脚本的基本知识和使用方法...
Chapter 1 - Fundamental Security Concepts Chapter 2 - Attacks, Motives, and Methods Chapter 3 - Security Management and Standards Part II - Detection and Device Management Chapter 4 - Logging...
:warning: 关于考试的重要注意事项: CEH v11将涵盖新主题,例如: 黑客挑战,新兴的攻击媒介(Web API,Web Shell等),Cointainer,逆向工程(静态和动态分析),WPA3,Parrot OS等。 指数所有模块在一个文件中:...
#shell条件测试条件测试的内容包括用户的输入,某条件命令执行完之后的返回状态,变量值,文件状态及系统发送的信号等.除此之外,shell脚本中的条件测试语句可以单独执行.##退出状态含义以及退出状态的设置####退出状态...
Shell是Linux和Unix操作系统中的命令解释器,它提供了一个用户...通过深入学习以上知识点,并结合"shell_study"中的教程和实践,你将能够熟练掌握Shell的基本操作和编程技巧,从而更高效地管理和控制Linux或Unix系统。
rpm -ivh mysql-community-libs-compat-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.30-1.el7.x86_64.rpm rpm -ivh mysql-...
- `Korn_Shell1.doc` 和 `korn_shel入门教程.docx` 提供了关于Korn Shell的详细教程。Korn Shell是Unix系统中的一个命令解释器,拥有Bash Shell的许多功能,并且更加强调交互性和兼容性。学习Korn Shell能让你更...
旧名 Atom-shell Electron 的核心是用 C++ 和 Python 编写的 功能 自动更新 崩溃报告(自动发送到某个地方?) Windows 安装程序 调试和分析(webkit 开发工具) 本机菜单和通知 典型应用 原子 松弛 视觉工作室...
BASH STUDY这个项目目的在于学习 bash.#说明由于初学shell,所以进程管理和系统级shell 没有记录。#历史2014.3,读了 《学习 bash》第二版。2014.3.14,建立目录框架2014.3.28,增加了 awk,windows bat, python 脚本。...
Shell / Ruby / Go 网络爬虫 - Python / PHP / C++ 数据分析挖掘 - Python / R / Scala / Matlab 机器学习 - Python / R / Java / Lisp 作为一名Python开发者,主要的就业领域包括: Python服务器后台开发 / 游戏...