【Bash百宝箱】shell内建命令之句点与source

在shell中,内建(builtin)命令句点“.”和source用法相同,格式以下:

. filename [arguments]
source filename [arguments]

句点命令和source的作用相同,都是从脚本filename中读取命令并履行它们,若指定了参数arguments,参数便成为对应的位置参数。命令履行的退出状态为履行的最后1个命令的退出状态,没有履行任何命令时,退出状态为0,若filename不存在,退出状态为1,需要注意的是,这个脚本的履行是在当前shell环境下完成的,履行结果会影响当前shell,而普通的脚本履行则是在子shell中,履行结果不影响当前shell,下面举例说明二者的区分。
测试脚本test.sh:

#!/bin/bash

var=test

普通用法:

$ var=foo
$ echo $var
foo
$ bash test.sh
$ echo $var
foo

使用source命令履行脚本:

$ var=foo
$ echo $var
foo
$ source test.sh
$ echo $var
test

从上面的例子中可以看出,使用source命令履行脚本的结果确切影响了当前shell,句点命令的效果是1样的,如果在shell脚本中定义了某些函数,这些函数是可以直接在当前shell中使用的。以下例子所示:

$ cat test.sh
#!/bin/bash

foo()
{
echo "function foo called"
}
$ . test.sh
$ foo
function foo called

在Linux环境中,有时候我们要修改1些配置文件,比如说位于用户主目录下的bash配置文件“.bashrc”,这个文件的修改是在新的shell终端才生效的,这时候就能够使用source命令履行这个文件,使之在当前shell立即生效。在许多开源项目中,都可以看到句点命令或source的用法,例如Android源码的编译。

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » 【Bash百宝箱】shell内建命令之句点与source

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡