Shell定义

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

关于解释器:

解释器(英语:Interpreter),又译为直译器,能够把高级编程语言一行一行直接转译运行。解释器不会一次把整个程序转译出来,只像一位"中间人",每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。它每转译一行程序叙述就立刻运行,然后再转译下一行,再运行,如此不停地进行下去。

linux命令有多重,可能是shell内建的,也可能是外部的命令,可以通过type -a 命令查看。

[root@localhost ~]# type -a cd

cd 是 shell 内嵌

cd 是 /usr/bin/cd

[root@localhost ~]# type -a mkdir

mkdir 是 /usr/bin/mkdir

[root@localhost ~]# type -a ll

ll 是 `ls -l --color=auto' 的别名

[oracle@localhost ~]$ type -a type

type 是 shell 内嵌

[root@localhost testsh]# which type

/usr/bin/which: no type in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

shell首先检查命令是否是内部命令,若不是再检查是否是一个应用程序(这里的应用程序可以是Linux本身的实用程序,如ls和rm,也可以是购买的商业程序,如xv,或者是自由软件,如emacs)。然后shell在搜索路径里寻找这些应用程序(搜索路径就是一个能找到可执行程序的目录列表)。如果键入的命令不是一个内部命令并且在路径里没有找到这个可执行文件,将会显示一条错误信息。如果能够成功找到命令,该内部命令或应用程序将被分解为系统调用并传给Linux内核。

注意:shell内嵌的命令是无法通过which找到的。

普通用户成功登录,系统将执行一个称为shell的程序。正是shell进程提供了命令行提示符。作为默认值(TurboLinux系统默认的shell是BASH),对普通用户用"$"作提示符,对超级用户(root)用"#"作提示符。

shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell编程语言简单易学,任何在提示符中能键入的命令都能放到一个可执行的shell程序中。

shell种类(了解)

  • Bourne Shell:是贝尔实验室开发的。也就是sh。
  • BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell。兼容sh。
  • Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。
  • C Shell:是SUN公司Shell的BSD版本。
  • Z Shell:The last shell you'll ever need! Z是最后一个字母,也就是终极Shell。它集成了bash、ksh的重要特性,同时又增加了自己独有的特性。

bash的命令语法是Bourne shell命令语法的超集。数量庞大的Bourne shell脚本大多不经修改即可以在bash中执行。我们下面都是在介绍bash。

默认shell

每个用户通过终端登录后,会根据passwd文件中的配置,使用相应的shell。

如下:

[oracle@localhost ~]$ cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

zjf:x:1000:1000:zjf:/home/zjf:/bin/bash

oracle:x:1001:1001::/home/oracle:/bin/bash

redis:x:1002:1003::/home/redis:/bin/bash

mysql:x:992:990:MySQL server:/var/lib/mysql:/bin/bash

其中,/sbin/nologin代表这个账号是辅助账号,不会登录。所以没有shell配置。

 

linux shell介绍的更多相关文章

  1. Linux shell简单创建用户脚本

    前面介绍简单的shell编写规则. 现在开始编写一个简单的shell脚本. Linux shell介绍 编写shell脚本    1.创建脚本文件    2.根据需求,编写脚本    3.测试执行脚本 ...

  2. 详细介绍Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  3. linux shell自定义函数(定义、返回值、变量作用域)介绍

    http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...

  4. .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础

    基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...

  5. linux shell中 if else以及大于、小于、等于逻辑表达式介绍

    在linux shell编程中,大多数情况下,可以使用测试命令来对条件进行测试,这里简单的介绍下, 比如比较字符串.判断文件是否存在及是否可读等,通常用"[]"来表示条件测试. 注 ...

  6. Linux shell脚本基础学习详细介绍(完整版)二

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  7. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提.1. Lin ...

  8. Linux centos7 shell 介绍、 命令历史、命令补全和别名、通配符、输入输出重定向

    一.shell介绍 shell脚本是日常Linux系统管理工作中必不可少的,不会shell,就不是一个合格管理员. shell是系统跟计算机硬件交互使用的中间介质,一个系统工具.实际上在shell和计 ...

  9. linux shell 自定义函数(定义、返回值、变量作用域)介绍

    linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...

随机推荐

  1. python pip换源方法

    以下资料来源于网络: pip国内的一些镜像   阿里云 http://mirrors.aliyun.com/pypi/simple/   中国科技大学 https://pypi.mirrors.ust ...

  2. 12.Flume的安装

    先把flume包上传并解压 给flume创建一个软链接 给flume配置环境变量 #flume export FLUME_HOME=/opt/modules/flume export PATH=$PA ...

  3. 简单的GCC语法: 弄清gcc test.c 与 gcc -c test.c 的差别

    转载于:http://cache.baiducontent.com/c?m=9d78d513d99610fe4fede5690d60c067690597634dc0d06368d5e31587231b ...

  4. Redis(1.14)Redis日常管理与维护

    [1]持久化 如果不做持久化,用replication去保证可用性,另外最后可以通过引用从数据库同步最新数据. 因此注释掉所有的持久化策略,添加一条带空字符串参数的save指令,也能移除之前所有配置的 ...

  5. Wordpress 所有 hook 钩子

    muplugins_loaded 在必须使用的插件加载之后. registered_taxonomy 对于类别,post_tag 等 Registered_post_type 用于帖子,页面等 plu ...

  6. 关于 resultType 与 parameterType 的基本使用的区别

    以下关于      resultType    与    parameterType   的基本使用的区别 : 1.使用  resultType :   主要针对于从数据库中提取相应的数据出来 2.使 ...

  7. Mysql 三大特性详解

    Mysql 三大特性详解 Mysql Innodb后台线程 工作方式 首先Mysql进程模型是单进程多线程的.所以我们通过ps查找mysqld进程是只有一个. 体系架构 InnoDB存储引擎的架构如下 ...

  8. python项目内import其他内部package的模块的正确方法

    转载 :https://blog.csdn.net/u011089523/article/details/52931844 本文主要介绍如何在一个Python项目中,优雅的实现项目内各个package ...

  9. C#等比列放大缩小图片

          public Bitmap ChangeImgSize(Image bit, double Multiple)         {             Bitmap newBitmap ...

  10. 【原创】大叔问题定位分享(35)spring中session失效时间

    spring项目中将sessionid对应的cookie过期时间设置很长,但是实际session还是在半个小时后失效,跟了一下代码,spring中session实现接口为 org.springfram ...