【Shell Basic】source . 与 bash sh 的区别

时间:2022-08-06 19:28:31

一、在命令行窗口执行shell脚本时,source .所执行的脚本中,变量的作用域在当前shell窗口期,而bash、sh在shell脚本执行完了就失效了。

dream361@master:~$ cat test.sh 
user
='pwd' 当前的脚本内容
dream361@master:
~$ bash test.sh 用bash执行
dream361@master:
~$ echo $user 结果为空
dream361@master:
~$ . test.sh 用 source 或 执行
dream361@master:
~$ echo $user 结果为pwd
pwd

二、执行一个脚本没有执行权限的脚本
1. 用 bash、sh
2. source 、.

3. chmod u+x test.sh 然后就可以用 绝对路径或相对路径执行此脚本

[root@Mmaster1 ~]# cat testSource.sh 查看此脚本内容
user
='last'
[root@Mmaster1
~]# unset user 清除变量值
[root@Mmaster1
~]# echo $user 输出为空

[root@Mmaster1
~]# source testSource.sh 执行赋值操作
[root@Mmaster1
~]# echo $user 输出变量值为last
last
[root@Mmaster1
~]# unset user 清除变量值
[root@Mmaster1
~]# echo $user 输出为空
[root@Mmaster1
~]#