Shell执行脚本

Shell作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行这一条,这种方式称为交互式,但还有另一种执行命令的方式称为批处理方式,用户事先写一个Shell脚本,Shell可以一次把这些命令执行完。

如下例子:

第一种执行方式:chmode+x script.sh

执行过程:

Shell会fork一个子进程并调用exec执行./script.sh这个程序,exec系统调用会把子进程代码段替换成./script.sh程序的代码段,exec有一种机制,如果要执行的是一个文本文件,并且第一行Shebang 指定了解释器,则用解释器程序的代码段替换当前进程,并且从解释器 的_start开始执行,而这个文本文件被当作命令行参数传给解释器

第二种执行方式:

shell执行过程:

1. 交互Shell(bash)fork/exec一个子Shell(sh)用于执行脚本,父进程bash等待子进程sh终 止。
2. sh读取脚本中的cd ..命令,调用相应的函数执行内建命令(不创建子进程,父进程运行),改变当前工作目录为上一级目 录。
3. sh读取脚本中的ls命令,fork/exec这个程序,列出当前工作目录下的文件,sh等待ls终止。
4. ls终止后,sh继续执行,读到脚本文件末尾,sh终止。
5. sh终止后,bash继续执行,打印提示符等待用户输入。

两种方法执行Shell脚本的效果是相同的,cd ..命令改变的是子Shell的PWD,而不会影响到 交互式Shell。

source ./script.sh或者. ./script.sh命令:

source或者.命令是Shell的内建命令,这种方式也不会创建子Shell,而是直接在交互式Shell下逐行 执行脚本中的命令。

时间: 2024-10-08 01:46:23

Shell执行脚本的相关文章

【Telnet】使用Telnet协议连接到远程Shell执行脚本

介绍 本文介绍如何通过Telnet协议连接到远程Shell,执行脚本,并获取执行结果: 相关文章: <[Jsch]使用SSH协议连接到远程Shell执行脚本>http://www.cnblogs.com/ssslinppp/p/6244653.html 其他示例: http://commons.apache.org/proper/commons-net/examples/telnet/TelnetClientExample.java http://www.programcreek.com/ja

MongoDB 基本操作(使用 javascript shell 执行脚本)

对于MongoDB来说视图工具有MongoDB VUE等,个人不是很习惯使用视图工具,所以比较喜欢使用MongoDB自带的javascript shell.不是大家所谓的提升B格,只是个人习惯.一下的一些内容参考自<MongoDB 权威指南2>. 在我的bin下面有一个js脚本我执行一下命令便可以完成调用. mongo script1.jsmongo --quiet script1.js [不打印MongDB shell Version ...]load("script1.js&qu

shell 执行方式

1.source(或者.) 当使用source运行脚本程序时,系统并不会创建子shell,而是将脚本中的命令放到shell父中运行 2.sh or bash 当使用sh或者bash运行shell脚本程序时,系统将创建一个子shell执行脚本中的命令 export 的作用是为当前shell设置环境变量,这样变量在其子shell也可以访问,当然,在其父shell中还是无法访问的 普通的变量只在当前shell中可以访问,在父shell或者子shell中都无法访问 3.后台运行脚本 命令 描述 moni

Linux Shell之脚本的执行

(1)shell如何执行一个命令 Linux的命令分为两类:一类是shell的内建命令:另一类则是独立于shell的命令.别忘了,shell也只是系统中的一个程序而已,当它执行非内建命令时,本质上是在呼叫另一只程序,比如ls.下面验证一下: m@meng:~/scripts$ which sh /bin/sh m@meng:~/scripts$ file /bin/sh /bin/sh: symbolic link to `dash` m@meng:~/scripts$ file /bin/da

Linux系列教程(二十)——Linux的shell概述以及如何执行脚本

从这篇博客开始,我们将进入Linux的shell脚本的学习,这对于Linux学习爱好者而言是特别重要的一节,也是特别有意思的一节,shell 脚本就像我们知道的Java,php类似的编程语言一样,通过shell脚本,我们能完成很多有意思的应用程序.在学习中找到乐趣,这也是最重要的. 本篇博客我们先给大家介绍一下什么是shell,以及bash的基本功能. 1.Shell 是什么? 和大家通常说的shell是一门编程语言的说法其实是不完全正确的. ①.shell 是一个命令行解释器,它为用户提供了一

详解shell中source、sh、bash、./执行脚本的区别

复制文章:https://www.jb51.net/article/128918.htm 这篇文章主要介绍了shell中source.sh.bash../执行脚本的区别,需要的朋友可以参考下 1.source命令用法: source FileName 作用:在当前bash环境下读取并执行FileName中的命令.该filename文件可以无"执行权限" 注:该命令通常用命令“.”来替代. 如:source .bash_profile . .bash_profile两者等效. sourc

linux shell执行远程计算机上的命令或者脚本(ssh)

大数据平台下经常建立设计多个节点的集群需要统一部署,这就设计到守护进程或者部署脚本在不同节点执行,如果能在master机器上,统一执行脚本,一次性启动整个集群的服务,感觉很nice.因为,分享如下内容: 前提条件: 配置ssh免密码登陆 对于简单的命令: 如果是在远端节点执行几个命令,则: ssh [email protected] "cd /home ; ls" 注意点: 双引号,必须有.如果不加双引号,第二个ls命令在本地执行 分号,两个命令之间用分号隔开 对于远端执行脚本的方式:

编写脚本标准的格式与执行脚本

编写脚本标准的格式: 第一行:#!/bin/bash  表示定义该脚本是一个shell脚本(固定格式) 第二行:#              这里的#属于注解,没有任何意义,shell 不会解析它. 第三行:#说明一下该脚本的作用 第四行:#写一下脚本的author(作者) 编写时间 第五行:写脚本内容 二三四行可有可无,建议养成好习惯. 要执行脚本(例如:first_shell.sh): (1)   加执行权限: chmod o+x first_shell.sh 运行脚本:./first_sh

Crontab执行脚本中的ssh命令访问被拒绝

我们经常会通过crontab来执行定时任务,通常生产环境中在不同主机直接进行登录是通过ssh来连接的.比如我们通过在备份服务器上设定定时任务,定期通过scp(使用SSH的远程拷贝命令)来拷贝远程服务器的数据到备份服务器上,这也是我遇到的一个事情. 环境描述: 脚本与定时任务: 定时任务设置如下: 无论是否执行成功,都把信息输出到2222.txt中 脚本内容如下: 我这里仅用ssh命令来测试,实际上这个命令如果可以正常执行的话,你执行scp命令也一样 #!/bin/bash ssh -v 192.