shell中的点命令与source命令

 今天在分析service实现代码时,遇到了点命令,乍一看,没明白怎么回事,但隐约觉得应该类似C语言中的#include。


    1 shell脚本执行方法

    有两种方法执行shell scripts,一种是新产生一个shell,然后执行相应的shell scripts;一种是在当前shell下执行,不再启用其他shell。

    新产生一个shell然后再执行scripts的方法是在scripts文件开头加入语句:#!/bin/sh。一般的script文件(.sh)即是这种用法。这种方法先启用新的sub-shell(新的子进程),然后在其下执行命令。

    另外一种方法就是上面说过的source命令,不再产生新的shell,而在当前shell下执行一切命令。source: source命令即点(.)命令。在 bash下输入man source,找到source命令解释处,可以看到解释"Read and execute commands from filename in the current shell environment and ..."。从中可以知道,source命令是在当前进程中执行参数文件中的各个命令,而不是另起子进程(或sub-shell)。

    2 source与点命令

    source 命令是 bash shell 的内置命令,从 C Shell 而来。

    source 命令的另一种写法是点符号,用法和 source 相同,从Bourne Shell而来。

    source 命令可以强行让一个脚本去立即影响当前的环境。

    source 命令会强制执行脚本中的全部命令,而忽略文件的权限。

    source 命令通常用于重新执行刚修改的初始化文件,如 .bash_profile 和 .profile 等等。

    source 命令可以影响执行脚本的shell的环境,而 export 则只能影响其shell的环境。

 

    使用方法举例:

    $source ~/.bashrc 或者:$. ~/.bashrc

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

 

    source命令(从 C Shell 而来)是bash shell的内置命令。点命令,就是个点符号,(从Bourne Shell而来)是source的另一名称。同样的,当前脚本中设置的变量也将作为脚本的环境,source(或点)命令通常用于重新执行刚修改的初始化文件,如 .bash_profile 和 .profile 等等。例如,如果在登录后对 .bash_profile 中的 EDITER 和 TERM 变量做了修改,则能用source命令重新执行 .bash_profile 中的命令而不用注销并重新登录。



你可能感兴趣的:(shell)