shell中使用source conf.sh,是直接运行conf.sh的命令,不创建子shell,类似与html中include,
而sh是则创建子shell,子shell里面的变量父shell无法使用,对环境变量的修改也不影响父shell。父shell中的局部变量,子shell也无法使用,只有父shell的环境变量,子shell能够使用。
shebang:
脚本第一行“#!”语句
注意:1.sh里面包含3句话
第一句是shebang, 表示运行程序应该使用什么东东执行它,这里表示使用#!/bin/cat执行
./1.sh 将1.sh全部cat出来了 这时./1.sh = cat 1.sh
第二句是shell的打印语句
第三句是非shell语句
直接使用sh 1.sh 是使用 sh/bash 执行1.sh
执行到第三句的时候报错。注意sh 是打开一个子shell完成任务,结束后返回当前shell
而. 1.sh 或者 source 1.sh 是在当前shell中执行,
报错也有区别:sh 1.sh 打开一个子shell,他会提示是在1.sh的第三行出错;
而 . 1.sh 是在当前shell下执行,他只会提示错误,不会指示哪个文件;
如果shebang语句就是bash,那么./2.sh 与 sh 2.sh 就没有区别了(还是有区别,报错提示多了一个./目录)