source命令与“.”点命令

source命令与“.”点命令

ID:10208360

大小:31.50 KB

页数:4页

时间:2018-06-12

source命令与“.”点命令_第1页
source命令与“.”点命令_第2页
source命令与“.”点命令_第3页
source命令与“.”点命令_第4页
资源描述:

《source命令与“.”点命令》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、source命令与“.”点命令source命令是bashshell的内置命令,从CShell而来。source命令的另一种写法是点符号,用法和source相同,从BourneShell而来。source命令可以强行让一个脚本去立即影响当前的环境。source命令会强制执行脚本中的全部命令,而忽略文件的权限。source命令通常用于重新执行刚修改的初始化文件,如.bash_profile和.profile等等。source命令可以影响执行脚本的父shell的环境,而export则只能影响其子shell的环境。

2、使用方法举例:$source~/.bashrc或者:$.~/.bashrc执行后~/.bashrc中的内容立即生效。一个典型的用处是,在使用Android的mm等相关命令时,需要先执行以下命令:$cd$source./build/envsetup.sh或者$../build/envsetup.shsource命令(从CShell而来)是bashshell的内置命令。点命令,就是个点符号,(从BourneShell而来)是source的另一名称。同样的,当前脚本中设置的变

3、量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文件,如.bash_profile和.profile等等。例如,如果在登录后对.bash_profile中的EDITER和TERM变量做了修改,则能用source命令重新执行.bash_profile中的命令而不用注销并重新登录。source命令的作用就是用来执行一个脚本,那么:sourcea.sh同直接执行./a.sh有什么不同呢,比如你在一个脚本里export$KKK=111,如果你用./a.sh执行该脚本,执行完毕后,你运行e

4、cho$KKK,发现没有值,如果你用source来执行,然后再echo,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结果并没有反应到父shell里,不过source不同,他就是在本shell中执行的,所以能看到结果。“.”点命令是shell的一个内部命令,它从指定的shell文件中读入所有命令语句并在当前进程中执行。因此当多个shell进程(父子进程或无关进程均可)共享一组变量值时,就可以将这些变量赋值语句定义到一个shell文件里,并在需要这些变量

5、值的程序中使用点语句来引用这个shell文件,从而实现变量值共享(对这些变量值的修改仅涉及到这个shell文件)。但要注意的是,这个shell文件不能包括含有位置参数的语句,即不能接受$1、$2等命令行参数。从上面可以看出,其实点命令相当于c语言里面的#include。点命令还有另一个写法:source。下面我们将举例来说明。我们先写一个简单的shell脚本文件,暂且命名为file1吧:#!/bin/basha="hi"echo$a我们先来执行一下这个shell脚本,打开终端,敲入:./file1结果是什么

6、,你应该也看到了吧:bash:./file1:Permissiondenied为什么呢。我们先不管这个吧,先看一下,另一个结果:../file1(注意啊,两个点之间有个空格的哦,要不就成了上一级目录了,如果你不嫌麻烦的话,也可以写source./file1)这个的结果呢,跟前面就不一样了,正如我们所愿的,输出了hi。./file1,直接执行,需要另起shell进程,而你似乎还没有这个权限(这个改一下就OK了,后面再说),而用点命令就不一样了(注意啊,./file这里的点可不是点命令里的点啊,我就被这个问题困

7、扰了很久,汗死,竟然忘了点还有当前目录的意思,大家b4我吧),点命令会在当前的shell下执行。补充说一下怎么改一下file1的权限,让我们可以在按shell脚本来执行:chmod+xfile1再执行一下./file1,是不是OK了?再来看另一个例子吧。首先脚本文件file1#!/bin/basha="hi"脚本文件file2(与file1在同一个目录下)#!/bin/bash./file1echo$a记得改一下file1的权限啊,要不./file1就没法执行了。执行一下看看结果。什么都没有,是吧。我们再改

8、一下file2,这回用一下咱们的点命令#!/bin/bash../file1echo$a怎么样结果不一样了吧。(原谅我实在太懒了,只能举这么简短的例子了,呵呵)。这个例子应该还是能说明点问题的吧。如果不用点命令的话,会另起shell进程,而启动这个进行的时候,它会建立自己的进程环境(暂且这么叫它吧),然后在这个进行结束的时候,它所建立的环境也随之被销毁。而且点命令就不一样了,它会把点命令所带的shell脚本里的所

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。