爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6110|回复: 6

模式基础(4):source命令用法

[复制链接]

新浪微博达人勋

发表于 2015-2-1 16:25:43 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x

解释二:source命令用法:
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令“.”来替代。
如:source .bash_rc 与 . .bash_rc 是等效的。
注意:source命令与shell scripts的区别是,
source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令

解释一:LINUX Shell脚本中点号和source命令LINUX中一个文件是根据其是否具有执行属性来判断他是否可以直接运行的。就像windows下的exe一样。如果我们要执行某一个文件,可以先将其权限修改为可执行(必须是所有者或者root才能修改)。然后,通过用sh来执行该脚本或者./脚本名。但有时候我们并不想修改文件权限,可能我们也没有那个权限,所以我们可以使用.(点号)+文件名来临时执行一个脚本而无须修改权限。在Linux系统中存在大量的脚本,其中你会看到大量这个用source命令(从 C Shell 而来)执行bash shell的内置命令。点命令,就是个点符号(从Bourne Shell而来)是source的另一名称。同样的,当前脚本中配置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文档,如 .bash_profile 和 .profile 等等。例如,假如在登录后,对.bash_profile中的 EDITER 和 TERM 变量做了修改,则能够用source命令重新执行.bash_profile中的命令而不用注销并重新登录。source命令的作用就是用来执行一个脚本,那么: source a.sh 同直接执行 ./a.sh 有什么不同呢?比如您在一个脚本里export $KKK=111,假如您用./a.sh执行该脚本,执行完毕后,您运行echo $KKK,发现没有值,假如您用source来执行,然后再echo ,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结果并没有反应到父shell里,但是source不同他就是在本shell中执行的,所以能够看到结果。

经典问题:shell脚本(test.sh)如下:#!/bin/shecho "export monitor=1" >> /etc/profilesource /etc/profile调用后(./test.sh),执行echo $monitor,没有输出任何值手动source /etc/profile后,再次执行echo $monitor,输出了预期的值可见脚本中的source /etc/profile没有成功(提法本身就是错误的),请问这个应该怎么解决?解:A:在执行test.sh的时候,不用./test.sh用source test.sh



密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-2-2 08:33:32 | 显示全部楼层
楼主真是有心人啊!
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2015-2-1 19:04:38 | 显示全部楼层
应该改名“Linux基础命令”吧。虽然转模式也必须会这些。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-2-2 08:21:58 | 显示全部楼层
letsdo8 发表于 2015-2-1 19:04
应该改名“Linux基础命令”吧。虽然转模式也必须会这些。

恩恩,版主说的很对,寒假在零碎的学习,估计过几天就把帖子重新整理下,写个pdf出来
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-2-2 08:42:51 | 显示全部楼层
燕子来了 发表于 2015-2-2 08:33
楼主真是有心人啊!

没有办法,谁叫我比较笨呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-2-2 08:56:48 | 显示全部楼层
haobang008 发表于 2015-2-2 08:42
没有办法,谁叫我比较笨呢

不是了,是楼主有心啊!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-2-7 22:21:19 | 显示全部楼层
感谢楼主分享
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表