shell脚本的执行和source
来源:互联网 发布:2017大数据概念股龙头 编辑:程序博客网 时间:2024/05/21 07:50
shell命令可以事先写入一个文件中,使用时shell读取文件中的命令逐条解释执行,这种文件,被称为脚本。
执行脚本的方法与执行其他程序一样,如:
./setenv.sh #setenv.sh是当前目录下的一个脚本
以这种方法执行脚本时,其中的命令是在一个子shell中执行的。子shell继承了父shell的环境变量,但无法修改他们,或者说所做的修改仅对子shell有效。
如果要使用脚本来修改环境变量,则必须让脚本在当前shell中执行,这一点可以用以下命令实现:
source setenv.sh #读入setenv.sh文件中的命令,在当前shell中执行。
source 是内置命令,用途是读取文件中的内容,并在当前shell中逐条执行。这种方式执行的脚本无须执行权限。source命令可以缩写为一个小数点,如
source setenv.sh 等价于 . setenv.sh
以下是一个例子:
在shell中设置TARGET变量
TARGET=arm-linux
然后新建了一个脚本文件test.sh,里面echo ${TARGET}
1. 执行 ./test.sh #无任何输出,因为test.sh在子shell中执行,如果不加export,就不会在子shell中看到这个变量,因为它还不是一个系统环境变量
2. 执行source test.sh #输出arm-linux,因为test.sh在当前shell中执行
3. export TARGET
./test.sh #输出arm-linux,因为export了TARGET的值
所以得出的结论是:1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出;2、一个shell中的系统环境变量才会被复制到子shell中(用export定义的变量);3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回到父shell中)。3、不用export定义的变量只对该shell有效,对子shell也是无效的。
- shell脚本的执行和source
- 在Linux中用source,dot(.)和直接用脚本文件名执行shell脚本的区别
- 在Linux中用source,dot(.)和直接用脚本文件名执行shell脚本的区别
- 在Linux中用source,dot(.)和直接用脚本文件名执行shell脚本的区别
- 在Linux中用source,dot(.)和直接用脚本文件名执行shell脚本的区别
- 在Linux中用source,dot(.)和直接用脚本文件名执行shell脚本的区别 .
- shell脚本执行命令 . 和sh 和 source 和 ./ 的使用以及区别
- 举例说明source执行脚本和sh执行脚本的区别
- 如何获得 sh 或 source 执行的shell 脚本位置
- Linux shell脚本执行方式:source、sh、bash、./执行脚本的区别
- Shell脚本用.和./执行的区别
- shell 脚本的执行
- linux中的source命令和直接执行脚本的区别
- linux下shell脚本执行方法及exec和source命令
- linux下shell脚本执行方法及exec和source命令
- 什么是Linux的Shell脚本和怎么执行脚本?
- 用source命令执行脚本和用sh执行脚本之间的区别
- 使用source与点命令执行Linux shell脚本的体会
- 【AI每日播报】Jeff Dean回顾 Google Brain 2016:机器学习取得重大进展
- 线段树及Lazy-Tag
- pat 1104
- 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错
- centos6.5 安装git
- shell脚本的执行和source
- X264编码流程详解
- 当前标识(NT AUTHORITY\NETWORK SERVICE)没有对“C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temp
- ES新特性学习
- A+B
- C++概述(二)
- HDU 1257 最少拦截系统
- [Azure]ARM模式下使用Powershell找出订阅中没有被使用的vhd
- Google Cloud Speech API 调用注意事项及调用方式__.Net版2