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. 执行方式测试
- bash 1.sh
- sh 1.sh
观察目录没改变了 是在子shell执行的
. bash.sh
source bash.sh
观察目录改变了。说明影响的是当前。并使用子shell执行方式执行。
在生成环境中如果不想影响当前所在路径就用前两种
如果无所谓1234随便
具体操作
- 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的变量将直接起效 - 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。 - ./的命令用法:
./FileName
作用:打开一个子shell来读取并执行FileName中命令。该filename文件需要’执行权限’
注:运行一个shell脚本时会启动另一个命令解释器.
每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.
这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.
shell脚本也可以启动他自已的子进程.
这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务.
由于是在子shell中执行,脚本设置的变量不会影响当前shell。
source是当前的bash环境下执行,所以你可以得到变量的值
bash是新起一个bash环境,变量里面的值,只在启动的bash环境有效
所以echo$ 变量得到的返回结果是不一样的