[Linux]常用命令之【source】

source 命令概述

source命令用法:source FileName

  • 简述

source命令(从 C Shell 而来)是bash shell的内置命令。
source又称:"点命令",是一个点符号。"点命令",就是个点符号————.,(从Bourne Shell而来)是source的另一名称。因此,该命令通常也可用命令"."来替代。

例如:source .bash_rc. .bash_rc ,二者等效

同样的,当前脚本中配置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文档,如 .bash_profile 和 .profile 等等。

例如,假如在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能够用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。
例如,在一个脚本里export $KKK=111 ,假如用./a.sh执行该脚本,执行完毕后,运行 echo $KKK,发现没有值,假如用source来执行 ,然后再echo,就会发现KKK=111。

  • 作用

在当前bash环境下读取、并执行FileName中的命令。常用于重新执行刚修改的初始化文件。
如:/etc/profile(系统环境变量,修改会对所有用户起作用) ; ~/.bash_profile(用户环境变量,针对当前用户) ; bashrc?
通过 source命令 在不重启的情况下使文件生效。

  • 使用范例
source filename

或 (等效于)

. filename

这两个命令都以一个脚本文件为参数,该脚本将作为当前shell的环境执行,即不会启动一个新的子进程。
所有在脚本中设置的变量将成为当前Shell的一部分。

source /etc/profile                   #执行/etc/profile文件,使其生效

辨析: source filename | sh filename | ./filename

本片段参考文献: Linux下source命令详解 - 博客园

1. 当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有”.”是用来表示当前目录的。

2. sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。

3. source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。

X 参考文献

原文地址:https://www.cnblogs.com/johnnyzen/p/13792237.html