shell学习第二天

来源:互联网 发布:淘宝客服简历模板 编辑:程序博客网 时间:2024/03/28 20:51

脚本位于第一行的#!

shell执行一个程序时,会要求linux内核启动一个新的进程,以便在该进程里执行所指定的程序.内核知道如何为编译性程序做这件事.但是我们的nusers Shell脚本并非编译性程序;shell要求内核执行它的时候,内核无法处理,并且回应”not executable format file”,接着会启动一个新的/bin/sh(标准shell)副本来执行该程序.

 

当系统只有一个shell,”退回到/bin/sh”的机制很方便.但是现在的linux都拥有好几个shell,因此需要通过一宗方式,告知linux内核用哪个shell来执行所指定的shell及哦啊本.

linux有多个shell带来的好处是有助于执行机制通用化,,让用户得以直接引用任何程序语言解释器,而非只是一个命令shell.

例如:文件开头存在#!  /bin/csh 则说明执行的是csh脚本,

相同的,例如我们可以这样引用独立的awk程序:  

#!  /bin/awk -f

此处是awk程序

shell脚本的第一行通常是#! /bin/sh.如果不这样是不符合标准的,自觉修改这个路径,将其改为符合POSIX标准的shell.

 

 

以下是几个初级的陷阱:

1.对#!这一行的长度尽量不要超过64个字符

2.脚本的可移植性取决于是否有完整的路径名称

3.不要在选项之后放置任何空白,因为空白也会跟着选项一起传递给被引用的程序.

4.需要知道解释器的完成路径的名称.这样可以规避可移植性的问题,厂商不同,同样的东西可能放在不同的地方

5.一些较久的系统,内核不具备#!的能力,有些shell会自行处理,这些shell对于#!与紧随其后的解释器名称之间是否可以有空白,可能有不同的解释.

查看当前发行版本可以使用的shell:cat  /etc/shells

查看系统默认的shell:echo $SHELL:一般情况下是输出/bin/bash.

如果想切换shell的版本,只需要直接输入shell的版本.例如想使用csh,直接输入csh即可,使用exit退出当前shell回到原shell.

0 0
原创粉丝点击