`
ppju
  • 浏览: 79810 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

shell study---1

阅读更多
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设计源码

    本项目为基于Java和Shell语言开发的study-project设计源码,包含141个文件,具体包括82个Java源文件、27个XML配置文件、10个JSON文件、4个Shell脚本文件、4个YAML配置文件、4个SQL文件、2个Git忽略配置文件、2个属性...

    shell-programming-study-notes:shell编程学习笔记

    1. 首个字符必须为字母(a-z,A-Z) 或者_ 2. 中间不能有空格,可以使用下划线(_) 3. 不能使用其他标点符号 ####变量赋值 a=123 b=$a ####变量取值 普通的变量赋值和输出 c=$a+$b echo $c 输出结果 123+123 shell...

    shell_study

    在"shell_study-master"这个文件夹中,很可能包含了一系列关于Shell脚本的示例、练习和教程。这些文件可能包括: 1. **脚本文件**(`.sh`扩展名):展示了各种Shell命令和语法的实际应用。 2. **解释文档**(`.md`或...

    LPIC-1 Linux Professional Institute Certification Study Guide-3rd--2013

    标题中提及的“LPIC-1 Linux Professional Institute Certification Study Guide-3rd--2013”表明这是关于LPIC-1认证的学习指南的第三版,发布年份为2013年。LPIC-1是Linux专业学会(Linux Professional Institute)...

    shell_study.rar

    "shell_study.rar"这个压缩包文件显然聚焦于Shell的学习材料,它可能包含了教程、脚本示例或者练习题,帮助用户深入理解Shell编程。 Shell的主要功能包括执行系统命令、自动化任务、文件管理以及通过脚本进行复杂...

    Experimental study of K-shell X-ray emission generated from nanowire target irradiated by relativistic laser pulses

    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

    《LPIC-1 Study Guide 2nd》是针对Linux Professional Institute Certification(LPIC)一级认证的详尽学习指南,由Roderick W. Smith撰写,第二版内容全面更新,覆盖了LPIC-1考试的所有核心知识点。这本书由Wiley ...

    my self-study

    在“my self-study”这个自学项目中,我们可以看到几个关键元素:标签为“数学”,以及四个文件或文件夹——hotkey、myaccount、shell-program和C++.txt。这些元素暗示了学习者可能正在探索不同的知识领域,包括基础...

    人性化解析shell脚本,保证快速入门sh,bash,shell入门.pdf

    "人性化解析shell脚本,快速入门sh、bash、shell入门" Shell脚本是Linux操作系统中的一种编程语言,用于自动化系统管理和任务执行。本文档旨在快速入门Shell脚本,帮助读者快速掌握Shell脚本的基本知识和使用方法...

    Sun Certified Security Administrator for Solaris 9 & 10 Study Guide

    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...

    CEH-v11-Study-Guide

    :warning: 关于考试的重要注意事项: CEH v11将涵盖新主题,例如: 黑客挑战,新兴的攻击媒介(Web API,Web Shell等),Cointainer,逆向工程(静态和动态分析),WPA3,Parrot OS等。 指数所有模块在一个文件中:...

    Linux-shell-study:学习Linux shell 脚本编程时写的一些脚本代码

    #shell条件测试条件测试的内容包括用户的输入,某条件命令执行完之后的返回状态,变量值,文件状态及系统发送的信号等.除此之外,shell脚本中的条件测试语句可以单独执行.##退出状态含义以及退出状态的设置####退出状态...

    shell基础学习资料.rar

    Shell是Linux和Unix操作系统中的命令解释器,它提供了一个用户...通过深入学习以上知识点,并结合"shell_study"中的教程和实践,你将能够熟练掌握Shell的基本操作和编程技巧,从而更高效地管理和控制Linux或Unix系统。

    MHA高可用环境搭建.md

    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-...

    linux study document

    - `Korn_Shell1.doc` 和 `korn_shel入门教程.docx` 提供了关于Korn Shell的详细教程。Korn Shell是Unix系统中的一个命令解释器,拥有Bash Shell的许多功能,并且更加强调交互性和兼容性。学习Korn Shell能让你更...

    study-electron:电子学习笔记

    旧名 Atom-shell Electron 的核心是用 C++ 和 Python 编写的 功能 自动更新 崩溃报告(自动发送到某个地方?) Windows 安装程序 调试和分析(webkit 开发工具) 本机菜单和通知 典型应用 原子 松弛 视觉工作室...

    bash-study:shell学习笔记

    BASH STUDY这个项目目的在于学习 bash.#说明由于初学shell,所以进程管理和系统级shell 没有记录。#历史2014.3,读了 《学习 bash》第二版。2014.3.14,建立目录框架2014.3.28,增加了 awk,windows bat, python 脚本。...

    典型相关分析matlab实现代码-Python-Study-100Days:Python研究100天

    Shell / Ruby / Go 网络爬虫 - Python / PHP / C++ 数据分析挖掘 - Python / R / Scala / Matlab 机器学习 - Python / R / Java / Lisp 作为一名Python开发者,主要的就业领域包括: Python服务器后台开发 / 游戏...

Global site tag (gtag.js) - Google Analytics