红联Linux门户
Linux帮助

《我的shell笔记之初窥门径》

发布时间:2010-03-24 22:24:56来源:红联作者:ailida
[align=center]《我的shell笔记之初窥门径》[/align]
昨天由于快熄灯了,所以只是开了个头就结束了。今天我们来继续学习Shell编程。
昨天我们看了一个简单的Shell程序。好,我们先来看下位于第一行的#!
当Shell执行一个程序时,会要求UNIX内核启动一个新的进程,以便在该进程中执行所指定的程序。内核知道如何为编译型程序做这件事。我们的nusers Shell脚本并非编译型程序:当Shell要求内核去执行它时,内核会回复一个错误信息。Shell收到此错误信息时就会认为此程序时Shell脚本,接着会启动一个新的/bin/sh(标准shell)副本来执行该程序。
但是,会出现一个问题:现行的UNIX系统都会拥有好几个Shell。因此需要一种方式,告知UNIX内核应该以哪个Shell来执行所指定的Shell脚本。方法是:通过脚本文件中特殊的第一行来设置:在第一行的开头处使用#!这两个字符,内核会扫描该行其余部分,看是否存在可用来执行程序的解释器的完整路径。此外,内核还会扫描是否有一个选项要传递给解释器。内核会以被指定的选项来引用解释器,再搭配命令行的其他部分。
Shell脚本通常一开始都是#! /bin/sh。
下面是几个需要留意的地方:
(1)如果你的/bin/sh并不符合POSIX标准,请将这个路径改为符合POSIX标准的shell。
(2)对#!这一行尽量不要超过64个字符。
(3)脚本是否具有可移植性取决于是否有完整的路径名称。
(4)别在选项(option)之后放置任何空白,因为空白也会跟着选项一起传递给被引用的程序。
(5)你需要知道解释器的完整路径名称。
(6)一些shell对于#!与紧随其后的解释器名称之间是否可以有空白,可能有不同的解释。
好了,时间又不早了,美好的时光总是特别的短暂。让我们下次在见吧。
未完待续??????
文章评论

共有 7 条评论

  1. cnlk 于 2010-03-31 19:07:55发表:

    知识每次不能学那么多,不然看完了都不知道看了多少了

    搂主坚持一下,保持每天都写,加油阿

  2. yuzhou 于 2010-03-26 08:02:54发表:

    ding!!!

  3. xborong 于 2010-03-25 21:42:27发表:

    加油我!!:0w5ty(1

  4. xborong 于 2010-03-25 21:42:00发表:

    :0wl;l1
    不懂

  5. mvp5941740 于 2010-03-25 08:27:43发表:

  6. Axflue 于 2010-03-25 08:22:07发表:

    都是高手啊,学习了

  7. paladin0 于 2010-03-25 06:46:59发表:

    下次写多点.不够看