source命令

source 命令 linux

source 命令 (从 C Shell 而来) 是 bash shell 的内置命令。
点命令(就是一个点符号.,从 Bourne Shell 而来) 是 source 的另外一名称。shell

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

source (或.) 命令一般用于从新执行刚修改的初始化文件,如 .bash_profile 和 .profile 等等。例如,若是在登陆后对 .bash_profile 中的 EDITER 和 TERM 变量作了修改,则能够用 source 命令从新执行 .bash_profile 中的命令而不用注销并从新登陆。像 .bash_profile 或其它相似的 Shell 脚本这样,文件无需可执行权限便可用 source 或点命令执行。
 
source 命令的一个妙用bash

  在编译核心时,经常要反复输入一长串命令,如
  make mrproper
  make menucon**
  make dep
  make clean
  make bzImage
  .......spa

这些命令既长,又繁琐。并且有时候容易输错,浪费你的时间和精力。若是把这些命令作成一个文件,让它自动按顺序执行,对于须要屡次反复编译核心的用户来讲,会很方便。用 source 命令能够办到这一点。它的做用就是把一个文件的内容当成是 shell 来执行。进程

例如,先在 /usr/src/linux-2.4.20 目录下创建一个文件,取名为 make_command:ip

  在其中输入以下内容:编译

  make mrproper &&
  make menucon** &&
  make dep &&
  make clean &&
  make bzImage &&
  make modules &&
  make modules_install &&
  cp arch/i386/boot/bzImge /boot/vmlinuz_new &&
  cp System.map /boot &&
  vi /etc/lilo.conf &&
  lilo -v登录

文件创建好以后,之后每次编译核心,只须要在 /usr/src/linux-2.4.20 下输入
source make_command变量

就好了。这个文件也彻底能够作成脚本,只需稍加改动便可。这里主要是让你们理解 source 的用法。若是你用的不是 lilo 来引导系统,能够把最后两句话去掉。配置你本身的引导程序来引导新内核。

shell 编程中的命令有时和 C 语言是同样的。&& 表示与,|| 表示或。把两个命令用 &&  接起来,如 make mrproper && make menucon** ,表示要第一个命令执行成功才能执行第二个命令。对执行顺序有要求的命令能保证一旦有错误发生,下面的命令不会盲目地继续执行。

运行以下命令./set_env.sh设置相关环境变量时发现:当此命令运行结束后,脚本中所设置的环境变量仍为空,感受此脚本没有执行;运行. set_env.sh脚本执行成功。经过上网查询,发现是因为source命令与shell scripts的做用范围不一样而致使的。

source命令与shell scripts的区别:
source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样若是把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,没法改变当前的BASH,因此经过文件(命令列)设置环境变量时,要用source 命令。

 

source命令的做用就是用来执行一个脚本,那么:source a.sh 同直接执行 ./a.sh 有什么不一样呢,好比你在一个脚本里export $KKK=111 ,若是你用./a.sh执行该脚本,执行完毕后,你运行 echo $KKK ,发现没有值,若是你用source来执行 ,而后再echo ,就会发现KKK=111。由于调用./a.sh来执行shell是在一个子shell里运行的,因此执行后,结构并无反应到父shell里,可是source不一样它就是在本shell中执行的,因此能够看到结果

相关文章
相关标签/搜索