• 1. Shell简介
    • 1.1. 编译型语言
    • 1.2. 脚本型语言
  • 2. 常见的Shell类型
    • 2.1. 查看shell
  • 3. 执行shell
    • 3.1. 作为可执行程序运行
    • 3.2. 作为解释器参数运行

    1. Shell简介

    shell是用户和Linux内核之间的一层代理,解释用户输入的命令,传递给内核。

    shell是一种脚本语言(解释性语言)。

    1.1. 编译型语言

    任何代码运行最终都需要被翻译成二进制的形式在计算机中执行。C/C++、Go语言等语言,需要在程序运行之前将代码编译成二进制形式,生成可执行文件,用户执行的是可执行文件,看不到源码。

    这个过程叫编译,这类语言叫编译型语言,完成编译过程的软件叫编译器

    1.2. 脚本型语言

    有的语言(例如: Shell、JavaScript、Python、PHP等)需要一边执行一边翻译,不会产生任何可执行文件,用户需要拿到源码才能运行程序。程序运行后会即时翻译,翻译一部分执行一部分,并不用等所有代码翻译完。

    这个过程叫解释,这类语言叫解释型语言脚本语言,完成解释过程的软件叫解释器

    2. 常见的Shell类型

    shell类型 说明
    sh sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。
    bash bash shell 是 Linux 的默认 shell,bash 兼容 sh,但并不完全一致。
    csh 语法有点类似C语言。

    2.1. 查看shell

    1. $ cat /etc/shells
    2. /bin/sh
    3. /bin/bash
    4. /sbin/nologin
    5. /usr/bin/sh
    6. /usr/bin/bash
    7. /usr/sbin/nologin
    8. /bin/tcsh
    9. /bin/csh

    查看默认shell

    1. $ echo $SHELL
    2. /bin/bash

    sh 一般被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接。

    1. $ ls -l /bin/sh
    2. lrwxrwxrwx. 1 root root 4 Mar 8 2018 /bin/sh -> bash

    3. 执行shell

    1. #!/bin/bash
    2. echo "Hello World !"

    #!/bin/bash表示使用的解释器是什么。

    3.1. 作为可执行程序运行

    1. chmod +x ./test.sh #使脚本具有执行权限
    2. ./test.sh #执行脚本

    3.2. 作为解释器参数运行

    1. # 使用 sh 解释器
    2. sh test.sh
    3. # 使用 bash 解释器
    4. bash test.sh