> 文章列表 > Linux命令--source命令的用法

Linux命令--source命令的用法

Linux命令--source命令的用法

原文网址:Linux命令--source命令的用法_IT利刃出鞘的博客-CSDN博客

简介

        本文介绍Linux的source命令的用法。

source命令介绍

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

        source(或点)命令通常用于重新执行刚修改的初始化文件,如 .bash_profile和 .profile 等等。例如,如果在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。

        source(或点)命令是shell的一个内部命令,它从指定的shell 文件中读入所有命令语句并在当前进程中执行。 因此当多个shell进程(父子进程或无关进程均可)共享一组变量值时,就可以将这些变量赋值语句定义到一个shell文件里,并在需要这些变量值的程序中使用点语句来引用这个shell文件,从而实现变量值共享(对这些变量值的修改仅涉及到这个shell文件)。但要注意的是,这个shell文件不能包括含有位置参数的语句,即不能接受$1、$2等命令行参数。

        从上面可以看出,其实source命令相当于c语言里面的#include。

示例

例1:.bashrc立即生效

source ~/.bashrc

或者

. ~/.bashrc

执行后 ~/.bashrc 中的内容立即生效。

例2:定义变量并使用

脚本(a.sh)

#! /bin/bash
export $KKK=111

执行命令

./a.sh;echo $KKK

执行结果

没有打印信息

执行命令

. ./a.sh;
echo $KKK

或者

source ./a.sh;
echo $KKK

执行结果

KKK=111

原因分析

./a.sh:

        当前终端所在的shell fork一个子shell然后执行a.sh的,会建立自己的进程环境,这个进程结束的时候,它所建立的环境也随之被销毁。所以执行完了再返回终端所在的shell,所以执行后,结果并没有反应到父shell里。

source a.sh:

        在当前shell中执行的,所以能看到结果。