source sh运行脚本的差别
主要有两种方式运行shell脚本
1)source test.bsh
2)sh test.bsh
1)souce运行脚本文件会在父程序中运行。各项动作都会在原本的bash内生效。运行过程不另开进程。脚本文件里设定的变量在当前shell中能够看到;
例如以下样例:
当中sh文件内容例如以下:
就是通过read命令从命令行中读取两个字符串firstname和lastname,作为一个完整的人名最后在屏幕上输出。source运行该文本文件时正确输出,source还能够用“.”直接替换;
source运行文件能够这样理解:
2)sh运行脚本文件是在当前进程另开子进程来运行脚本命令,脚本文件里设定的变量在当前shell中不能看到。使用这样的运行方式时,事实上script实在子程序的bash中运行的,当子程序完毕之后,子程序内的各项变量或者动作将会结束而不会传回到父程序中。对照第一张图我们能够得到以下的结果:
当sh文件运行完成之后。子程序bash中的全部数据便被移除。
能够这样理解
"./"运行结果和sh运行结果同样。
值得注意的是:一般当我们想要让某些写入~/.bashrc(如环境变量)生效的时候,都须要注销系统,又一次开启服务,当我们不注销系统就想要使写入生效的时候,我们就能够使用source ~/.bashrc而不是使用sh ~/.bashrc.
source sh运行脚本的差别的更多相关文章
- 使用sh运行bash脚本的奇怪问题
		在同一个文件夹下有两个脚本.a.sh和b.sh,脚本内容例如以下: a.sh: echo "test for a" source b.sh b.sh: echo "tes ... 
- [Shell Script]关于source和sh对于脚本执行不同
		当我修改了/etc/profile文件,我想让它立刻生效,而不用重新登录:这时就想到用source命令,如:source /etc/profile对source进行了学习,并且用它与sh 执行脚本进行 ... 
- [转] 用source命令执行脚本和用sh执行脚本之间的区别
		from: http://blog.csdn.net/david_xtd/article/details/8012627 问题: 有很多方式可以执行脚本, 1).source test.bsh 2). ... 
- 让SH/BAT脚本定位到运行目录的相对位置,实现其脚本可在任意运行目录下被正确执行
		让SH/BAT脚本定位到运行目录的相对位置 实现其脚本可在任意运行目录下被正确执行 在Linux下的bash脚本 #!/bin/bash cd `` 在Windows下的BAT脚本 echo off ... 
- 18.4 运行脚本  sudo ./launcher.sh 必须先给他权限 才能使用
		我们发现我们每次启动服务都要打一大堆命令,ng build --watch ,nodemon server.js ,等等 凡是重复的工作,我们要可以代码完成 要想运行它呢 你必须将你运行的上述(脚本中 ... 
- Linux Source命令及脚本的执行方式解析
		转 http://www.51testing.com/html/38/225738-206878.html 当我修改了/etc/profile文件,我想让它立刻生效,而不用重新登录:这时就想到用sou ... 
- Linux下的Source命令及脚本的执行方式解析
		Linux Source命令及脚本的执行方式解析 http://blog.csdn.net/wangyangkobe/article/details/6595143 当我修改了/etc/profile ... 
- Oracle12c中多宿主容器数据库(CDBs)和可插拔数据库(PDBs)新特性之运行脚本
		对开发者和DBA们来说,对shell脚本批量任务的影响成了多宿主选项带来的最大改变之一.因为多宿主环境通过服务来连接到可插拔数据库,因此,依靠CRON和OS认证成了换成多宿主环境后的一个最大问题.本文 ... 
- Linux Source命令及脚本的执行方式解析(转)
		当我修改了/etc/profile文件,我想让它立刻生效,而不用重新登录:这时就想到用source命令,如:source /etc/profile对source进行了学习,并且用它与sh 执行脚本进行 ... 
随机推荐
- 本地虚拟机在ubuntu系统搭建nexus服务器
			本地虚拟机在ubuntu系统上搭建nexus服务器 本地虚拟机在ubuntu系统上搭建nexus服务器所需软件: 虚拟机:VM或者Oracle VM VirtualBox 系统:ubuntu-14.0 ... 
- J.U.C并发框架源码阅读(九)LinkedBlockingQueue
			基于版本jdk1.7.0_80 java.util.concurrent.LinkedBlockingQueue 代码如下 /* * ORACLE PROPRIETARY/CONFIDENTIAL. ... 
- Oracle高级函数
			http://www.cnblogs.com/chen1388/archive/2010/07/06/1771919.html decode函数: decode(aa, 1, 'xs', 2, 'ps ... 
- 天梯L2-003-测试点
			测试点3无法过,题目说是正整数用了int,结果得用double输入才能AC. 
- 2.1多线程(java学习笔记) java中多线程的实现(附静态代理模式)
			一.多线程 首先我们要清楚程序.进程.线程的关系. 首先进程从属于程序,线程从属于进程. 程序指计算机执行操作或任务的指令集合,是一个静态的概念. 但我们实际运行程序时,并发程序因为相互制约,具有“执 ... 
- Android Studio+WebApi(一)属于我们自己的App
			AndroidStudio(以后都简称AS),作为google的亲儿子,终于出了个像样的android ide,再也不用在eclipse中又是Adt,又是这又是那的,一大堆的集成了.废话不多说,这个系 ... 
- Ubuntu 16.04下ssh启用root登录
			debian里root账户默认没有密码,但账户锁定. 当需要root权限时, 直接执行 sudo su 即可切换为root用户. 重新开启root账号,在命令行下执行 sudo passwd root ... 
- 工作组模式下专用队列(Private Queue)如何引用远程队列路径
			查了N久资料,包括MSDN的官方文档,对于同一工作组下,不同机器之间如何利用Private Queue(专用队列)来发送/接收消息,关于Path的引用一说,无非都是MachineName\privat ... 
- JAVA常见算法题(五)
			package com.xiaowu.demo; /** * 利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示. * * * @ ... 
- appium 测试模拟器时输入adb devices显示 unauthorized
			https://stackoverflow.com/questions/32132434/set-adb-vendor-keys 也就是点击AVD管理器右边的下拉列表,点击清除数据,再重启虚拟机 0d ... 
