Linux脚本命名规则,关于脚本文件命名的问题

deepwhite 于 2011-05-27 10:56:02发表:

科普一下 ---- Linux 脚本文件

首先要肯定的是,脚本文件不需要指定拓展名。

那么,如果不指定拓展名,那么 OS 是怎么判断该脚本应该用什么解释器来解释执行呢? bash? python? 还是 perl ?

编写过这类脚本的人都知道,Linux 下面的脚本文件,开头第一行都会写成下面的形式:[code]

#!/bin/bash

[/code]或者[code] #!/usr/bin/env python [/code]这里的 #! 实际上是一个特殊的标记,用于告诉系统改用什么解释器来执行脚本。

对于 Linux 来讲,脚本一般通过一个终端来执行,该终端在执行脚本的时候,将会通过内核提供的相关系统调用(如 exec等)来用待执行的脚本来替换当前进程的映像。而内核在执行 exec 的时候,会首先打开该脚本,并读取脚本中的以 #! 开头的行,然后再经过一系列的判断之后,决定该使用哪个解释器来解释和执行脚本。

例如下面的简单脚本的内容和执行情况:[code]~/tmp $ cat test

#!/bin/bash

#

echo "AAAAAAA"

~/tmp $ chmod 751 test

~/tmp $ ./test

AAAAAAA

[/code]而如果我们把 /bin/bash 换成一个别的、不存在的解释器,就会发现:[code]~/tmp $ cat test

#!/bin/basha

#

echo "AAAAAAA"

~/tmp $ ./test

/bin/basha: command not found[/code]感兴趣的话,你也可以将 /bin/bash 换成一些确实存在、但不能用来解释该脚本的程序,比如 ls, find 之类的,看看会有什么现象发生。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值