zoukankan      html  css  js  c++  java
  • Shell脚本第一行

    何为Shell脚本:

    (1)为实现某个任务,将许多命令组合后,写入一个可执行的文本文件的方法,称为Shell脚本编程。

    (2)Shell 脚本其实就是文本文件,建立新的脚本文件时,可以使用Vi、Emacs等文本编辑器。

    (3)Shell脚本通常不需要特殊处理,对脚本文件加上可执行权限,就可以像应用程序一样执行;

    (4)Shell脚本分许多类型,最常见的是应用于Bash和Tcsh的脚本。通常Bash脚本文件名以sh结尾,Tcsh脚本文件以csh结尾

      通俗地讲,shell脚本就是写有一堆系统命令+简单的shell语法(变量、if判断、循环语句等)的一个文件,执行这文件能把所有命令一次性都执行了并实现一定的目的。

    Shell第一行:

    • 它不是注释,"#!/bin/sh"是对shell的声明,说明你所用的是那种类型的shell及其路径所在;
    • 告诉操作系统, 此脚本的解释器为 /bin/sh 这个可执行文件
      类似地, 如果你的脚本用 bash, ksh, 解释, 第一行就应该是
      #!/bin/bash
      #!/bin/ksh
      之类的

      或者, 你自己定义一种脚本语言, 再自己写个解释器去执行它, 比如说叫 xshell, 放在 /usr/local/bin 下, 你的脚本第一行就应该是
      #!/usr/local/bin/xshell

      如果没有这样定义的第一行, 不同 unix 类操作系统会用默认 shell 来解释脚本, 如 unix 往往是 sh, linux 往往是用 bash, ....
    • 当Shell执行一个程序时,会要求内核启动一个新的进程(process),以便在该进程里执行所指定的程序。内核知道如何为编译型程序做这件事。比如sh.sh文件可以执行,但是不是编译程序。

    当Shell要求内核执行它时,内核无法完成这一要求,并回应“不是可执行的格式文件”提示信息。Shell收到此错误信息的时候,会判断不是编译程序,那么一定是Shell脚本,因此会执行一个新的Shell副本来执行该程序,这也就是Shell执行的过程。

    在unix中为/bin/sh 在linux一般为/bin/bash 这个你懂的!!!

    然而,一般的unix/linux系统一般都不止一个shell 比如ksh、csh、bash(学习中).....如果在系统中提供一种方式来解释Shell执行,那不是很棒?因此,在一般的Shell脚本中会添加第一行为#!/bin/*sh的字符 比如:csh的脚本  #!/bin/csh -f 意思就是这是一个csh

    在书中讲到了#!这一行的长度是有限制的 从63到1024个字符都有,进来不要超过 64个。

    脚本是否具有可移植性,取决于是否具有完整的路径名称。

    另外,在选项之后尽量不要放置任何的空白,因为空白也会跟着选项一起传递给引用程序。

    Shell编写者应该清楚解释器的完整路径名称。因为不同的系统会放在不同的位置。(例如/bin/awk和/usr/bin/awk)。

  • 相关阅读:
    mysql修改数据表名
    HDU 5742 It's All In The Mind (贪心)
    HDU 5752 Sqrt Bo (数论)
    HDU 5753 Permutation Bo (推导 or 打表找规律)
    HDU 5762 Teacher Bo (暴力)
    HDU 5754 Life Winner Bo (博弈)
    CodeForces 455C Civilization (并查集+树的直径)
    CodeForces 455B A Lot of Games (博弈论)
    CodeForces 455A Boredom (DP)
    HDU 4861 Couple doubi (数论 or 打表找规律)
  • 原文地址:https://www.cnblogs.com/guosj/p/4568112.html
Copyright © 2011-2022 走看看