码迷,mamicode.com
首页 > 系统相关 > 详细

我看shell的第一眼

时间:2015-12-14 19:13:07      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:解释器   shell执行过程   查看当前shell   

我看shell的第一眼

1、脚本解释器设置

脚本第一行:#!/bin/sh

[root@SUN sun]# cat test.sh
#!/bin/sh

首先第一行可以拆分为两部分,#!和绝对路径,#!只是特殊的表示符,#!后面存放的是解释器地址(即shell存放路径)。注意,shell路径必须是全路径。其实第一行也不是非写不可,是可以省略的,不写第一行,可以手动指定shell,例如:sh   test.sh,手动指定shell,脚本文件还不必要求有执行权限。

2shell执行脚本的过程

a、执行交互式命令

用户进入终端,shell进程已经被运行,用户输入一条命令,如果是shell内部命令(例如cd,exec,此时不会新建一个进程,内部命令其实就是shell里的一个子函数,就在当前进程执行完毕。如果是一个外部命令(例如lsrm),则shell进程会先fork一个子进程,调用exec执行该命令,父进程调用wait()waitpid()来等待子进程结束。

b、执行脚本文件

shell进程会先fork一个子进程,然后调用exec执行脚本文件。这个时候执行exec执行的另外一套机制,exec会读取文本文件的第一行,如果指定了解释器,则会调用指定的解释器,从解释器的_start开始执行,脚本文件的内容就当作参数传给解释器。

3、查看当前使用shell的方法

1echo $SHELL

   [root@SUN Desktop]# echo $SHELL
  /bin/bash

2ps

[root@SUN Desktop]# ps
    PID TTY          TIME CMD
   3246 pts/0    00:00:00 bash
   3269 pts/0    00:00:00 ps

(3)输入一条不存在的命令,abcd

[root@SUN Desktop]# adcd
  bash: adcd: command not found

4ehco $0

  [root@SUN Desktop]# echo $0
   /bin/bash

本文出自 “10993620” 博客,请务必保留此出处http://11003620.blog.51cto.com/10993620/1722955

我看shell的第一眼

标签:解释器   shell执行过程   查看当前shell   

原文地址:http://11003620.blog.51cto.com/10993620/1722955

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!