美文网首页
shell 简介

shell 简介

作者: 夏至悲歌 | 来源:发表于2018-10-04 10:45 被阅读0次

    1. shell是什么

            Shell英文意思是外壳, 用户通过Shell和操作系统交互,Shell就是一个解释器,在Linux输入一条命令可以查看当前正在使用的Shell:

    echo $SHELL

            当我们输入一条命令Shell就解释执行,这是交互式的方式。shell还有一种批处理的方式(Batch),写一个Script解释执行。

    2. shell的基本原理

            Linux输入的命令分为内部命令(built-in)以及外部命令,像ls,cat,mkdir这些都属于外部命令,而echo,cd,pwd这些都属于内置命令,用type命令可以辨别是否属于内部命令。

    $ type cd

    cd is a shell builtin

    $ type cat

    cat is /bin/cat

            内置命令属于Shell的一部分,当Shell一运行起来就随Shell加载入内存,在命令行上输入这些命令就可以像调用函数一样直接使用,效率非常高。命令行输入外部命令,当前的Shell会fork一个子进程,然后调用exec载入这个命令的可执行文件,比如bin/cat,因此效率上稍微低了点。

    3. /bin/sh和/bin/bash的区别

            shell脚本的开头有一句话定义使用哪种sh解释器来解释脚本。#!是对脚本的解释器程序路径。

            GNU/Linux操作系统中的/bin/sh本是bash (Bourne-Again Shell) 的符号链接,但鉴于bash过于复杂,有人把bash从NetBSD移植到Linux并更名为dash (Debian Almquist Shell),并建议将/bin/sh指向它,以获得更快的脚本执行速度。Dash Shell 比Bash Shell小的多,符合POSIX标准。

    hwl@~/code/Test~$ll /bin/sh

    lrwxrwxrwx 1 root root 4  2月 15  2018 /bin/sh -> dash*

    hwl@~/code/Test~$ll /bin/bash

    -rwxr-xr-x 1 root root 1029720 10月  7  2014 /bin/bash*

            一般的linux系统当中(如redhat),使用sh调用执行脚本相当于打开了bash的POSIX标准模式。 也就是说 /bin/sh 相当于 /bin/bash --posix

    POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX )。 是为了提高 UNIX 环境下应用程序的可移植性。

    相关文章

      网友评论

          本文标题:shell 简介

          本文链接:https://www.haomeiwen.com/subject/iccxaftx.html