Shell脚本第一行
2015-06-11 09:36
309 查看
何为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及其路径所在;
当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)。
(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)。
相关文章推荐
- bash快捷键
- PowerShell中的转义字符是什么?
- PowerShell批量文件重命名操作实例
- PowerShell中获取当前运行脚本路径的方法
- PowerShell中的函数重载示例
- Java调用 shell脚本阻塞
- [Ubuntu] bash: warning: setlocale: LC_ALL: cannot change locale
- WEBSHELL跳板REDUH使用说明
- 关于linux报bash ‘/bin/sh: Syntax error: “(” unexpected
- java执行shell命令,chmod 777 xxx,改变权限无效的解决办法。
- 使用PowerShell修改Server20102R2系统配置
- shell 空格问题
- shell判断文件,目录是否存在或者具有权限的代码
- shell脚本积累
- nodejs shell
- 重写start.sh--shell脚本
- Linux shell编程 字符串拼接
- shell 各种循环判断
- shell for循环
- shell脚本操作mysql数据库—创建数据库,在该数据库中创建表(插入,查询,更新,删除操作也可以做)