linux脚本文件执行的方法之间的区别
sh/bash
sh a.sh
bash a.sh
都是打开一个subshell去读取、执行a.sh,而a.sh不需要有"执行权限",在subshell里运行的脚本里设置变量,不会影响到父shell的
source
source a.sh
在当前shell内去读取、执行a.sh,而a.sh不需要有"执行权限"
source命令可以简写为"." 即
. a.sh
./
./a.sh
#bash: ./a.sh: 权限不够
chmod +x a.sh
./a.sh
打开一个subshell去读取、执行a.sh,但a.sh需要有"执行权限"
可以用chmod +x添加执行权限
fork、source、exec
- 使用fork方式运行script时, 就是让shell(parent process)产生一个child process去执行该script,当child process结束后,会返回parent process,但parent process的环境是不会因child process的改变而改变的。
- 使用source方式运行script时, 就是让script在当前process内执行, 而不是产生一个child process来执行。由于所有执行结果均于当前process内完成,若script的环境有所改变, 当然也会改变当前process环境了。
- 使用exec方式运行script时, 它和source一样,也是让script在当前process内执行,但是process内的原代码剩下部分将被终止。同样,process内的环境随script改变而改变。
通常如果我们执行时,都是默认为fork的。
linux脚本文件执行的方法之间的区别的更多相关文章
- linux下定时执行任务方法【转】
之前就转过一篇关于定时任务的文章,前俩天用,还的翻出来看!!!再转一次,备用,,需要的时候不用麻烦找! ----------------------------------------------- ...
- 针对php脚本文件执行锁定的代码,避免脚本在同一时间重复运行
<?php//针对php脚本文件执行锁定的代码,避免脚本在同一时间重复运行,http://ken.01h.net/define('PHP_LOCK_FILE', dirname(__FILE__ ...
- linux无文件执行— fexecve 揭秘
前言 良好的习惯是人生产生复利的有力助手. 继续2020年的flag,至少每周更一篇文章. 无文件执行 之前的文章中,我们讲到了无文件执行的方法以及混淆进程参数的方法,今天我们继续讲解一种linux上 ...
- jquery中使元素显示和隐藏方法之间的区别
在实际的项目开发中,要使一个元素隐藏的方法有很多,比如css的多种属性和jquery的多种方法,虽然他们的作用都是使元素不可见,但是各个方法实现的原理是不一样的.下面主要介绍jquery各个元素隐藏方 ...
- linux压缩文件——解压方法
linux下 tar解压 gz解压 bz2等各种解压文件使用方法 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar ...
- SERVLET中的doGet与doPost两个方法之间的区别
get和post是http协议的两种方法,另外还有head, delete等 这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串.post的参数是通过另外的 ...
- Python 中格式化字符串 % 和 format 两种方法之间的区别
Python2.6引入了 format 格式化字符串的方法,现在格式化字符串有两种方法,就是 % 和 format ,具体这两种方法有什么区别呢?请看以下解析. # 定义一个坐标值 c = (250, ...
- 批量删除linux的文件;find方法批量删除文件;find查找某时间段内的所有文件
1.如图所示,有大量文件夹,想批量删除它们 2.使用命令 find . -maxdepth 1 -regex ".*ws.*" 可以批量找到他们.maxdepth值为1表示只在当 ...
- linux下文件传输一些方法整理.
ftp类 ftp 命令已经不推荐使用了. #基本用法 lftp sftp://[domain name] lftp sftp://theURL.org #使用不同用户名 lftp sftp://[us ...
随机推荐
- day0318装饰器和内置函数
一.装饰器 1.装饰器: 解释:装饰器的本事就是一个函数,不改动主代码的情况下,增加新功能.返回值也是一个函数对象. 2.装饰器工作过程 import time def func(): print(' ...
- git 用远程覆盖本地
git fetch --all git reset --hard origin/master
- python中的list以及list与array相互转换
python中的list是一种有序集合,可以随时增删元素: # -*- coding: utf-8 -*- frameID = 1 frameID_list = [] frameID_list.app ...
- VS Code 管理 .NET Core解决方案
本练习要使用Visual studio code完成一个包含多个项目的解决方案,包括类库和Web项目.结合Visual Studio Code和.NET Core CLI,创建项目结构如下: pied ...
- bat实现获取文件每行内容,for循环中运行多条命令
关键词:bat,bat获取文件内容 1.获取每行内容 @echo offfor /f "delims=" %%i in (config.txt) do (echo "%% ...
- python wmi模块 获取windows内部信息
WMI (Windows Management Instrumentation) 模块可用于获取 Windows 内部信息,在使用Python获取Windows系统上的相关的信息可以使用WMI接口来获 ...
- 报错解决——OSError: libdarknet.so: cannot open shared object file: No such file or directory
在python目录下打开终端,输入 python darknet.py 结果报错 Traceback (most recent call last): File “darknet.py”, line ...
- Jmeter原理
Jmeter结构体系及运行原理 Jmeter结构体系 把Jmeter的结构体系拆分为三维空间,如图: X1~X5:是负载模拟的一个过程,使用这些组件来完成负载的模拟: X1:选择协议,模拟用户请求 ...
- 鼠标 DPI与CPI
何为dpi: dpi英文全称是“dots per inch”,直译为“每英寸像素”,意思是每英寸的像素数.(1 英寸=2.54cm),是指鼠标内的解码装置所能辨认每英寸长度内像素数.(屏幕上最小单位是 ...
- NYOJ 方案数量
1.递归求解(直接递归会超时,要用备忘录法) # include<iostream> # include<stdio.h> #include <map> using ...