linux脚本运行的三种方法

首先进入shell目录创建一个创建一个简单的脚本echo.sh


$cd ~/shell

$vi echo .sh

#!/bin/bash

cd /tmp

echo "hello world"

1.赋予脚本可执行权限,直接执行


$pwd

~/shell

$chmod +x echo.sh

$./echo.sh

hello world

$pwd

~/shell

2.使用解释器解释并执行该脚本


$pwd

~/shell

$chmod -x echo.sh

$/bin/bash echo.sh

hello world

$pwd

~/shell

3.使用source命令解释并执行该脚本


$pwd

~/shell

$chmod -x echo.sh

$source echo.sh

hello world

$pwd

/tmp

分析:发现第1,2中和第三种的区别在于前两种运行完后所在目录是~/shell,而第三种是/tmp。是什么原因呢?原来linux每启动一个终端都会为此终端开辟一个进程,假设当前的终端进程为P进程,当我们只想前两种方法时,p进程会fork一个子进程(假设为C进程),然后在C进程中运行echo脚本,C进程和P进程刚开始有一样的执行环境,也就是当前目录是~/shell,执行完echo.sh后C进程的当前目录会变成/tmp,然后执行echo "hello world",执行完该脚本C进程会销毁掉然后返回P进程,但是P进程的当前目录还是~/shell;source命令就不一样了,source命令会让P进程自己解释并执行echo.sh,所以执行完之后当前目录就是/tmp了。

阿里云双十一云服务器拼团活动,已经打到最低价99元一年!有需要的可以考虑一波了!

https://m.aliyun.com/act/team1111/#/share?params=N.9g4CZ2TwSh.qilw7y0a

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,162评论 0 10
  • Linux习惯问题: 在vim编辑时,按了ctrl + s后,再按ctrl + q就可以继续执行了。ctrl + ...
    光着脚的鞋阅读 9,980评论 0 16
  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 12,598评论 1 19
  • 第一章 1.Linux是一套免费使用和自由传播的类UNIX操作系统,它可以基于Intel x86系列处理器以及Cy...
    yansicing阅读 10,806评论 0 9
  • 1.compile javac -cp .:../build/:../../lib/jelly_blast.jar...
    it_tom阅读 3,808评论 0 0