shell脚本的执行方法
执行1:bash 1.sh
执行2:sh 1.sh
执行3: .1.sh
执行4: source 1.sh

多种执行方式的区别:
1和2的方式,是子shell(重新开起一个shell解释器)
3和4的方式,是本shell(就在当前shell执行)

测试
1.准备环境

vim bash.sh

#!/usr/bin/bash
cd /home/
ls
**2. 执行方式测试

  1. bash 1.sh
  2. sh 1.sh
    观察目录没改变了 是在子shell执行的

. bash.sh
source bash.sh
观察目录改变了。说明影响的是当前。并使用子shell执行方式执行。

在生成环境中如果不想影响当前所在路径就用前两种
如果无所谓1234随便
具体操作

  1. source命令用法:
      source FileName
      作用:在当前bash环境下读取并执行FileName中的命令。该filename文件可以无’执行权限’
    注:该命令通常用命令“.”来替代。
    如:source .bash_profile www.2cto.com
    . .bash_profile两者等效。
    source(或点)命令通常用于重新执行刚修改的初始化文档。
    source命令(从 C Shell 而来)是bash shell的内置命令。
    点命令,就是个点符号,(从Bourne Shell而来)。
    source的程序主体是bash,脚本中的$0变量的值是bash,而且由于作用于当前bash环境,脚本中set的变量将直接起效
  2. sh, bash的命令用法:
    sh/bash FileName
    作用:打开一个子shell来读取并执行FileName中命令。该filename文件可以无’执行权限’
    注:运行一个shell脚本时会启动另一个命令解释器.
    每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.
    这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.
    shell脚本也可以启动他自已的子进程.
    这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务.
    在ubuntu中sh只是bash的一个链接。 www.2cto.com
    由于是在子shell中执行,脚本设置的变量不会影响当前shell。
  3. ./的命令用法:
    ./FileName
    作用:打开一个子shell来读取并执行FileName中命令。该filename文件需要’执行权限’
    注:运行一个shell脚本时会启动另一个命令解释器.
    每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.
    这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.
    shell脚本也可以启动他自已的子进程.
    这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务.
    由于是在子shell中执行,脚本设置的变量不会影响当前shell。

source是当前的bash环境下执行,所以你可以得到变量的值
bash是新起一个bash环境,变量里面的值,只在启动的bash环境有效
所以echo$ 变量得到的返回结果是不一样的