Shell中四种执行脚本方式的对比

测试脚本

#!/bin/bash
# test7:用于对比各种脚本程序执行方式的区别
echo "The variable var1 is" $var1
echo "The environment variable env1 is" $env1
echo "The current shell PID is $$"

1. 使用绝对路径执行脚本

  • 测试过程
root@Dell-Tom:~# var1=1
root@Dell-Tom:~# export env1=1
root@Dell-Tom:~# echo "The current shell PID is" $$
The current shell PID is 564
root@Dell-Tom:~# /root/script_test/test7
The variable var1 is
The environment variable env1 is 1
The current shell PID is 587
  • 小结:使用绝对路径执行脚本,实际上是新建一个Shell执行脚本中的命令,并且新建脚本会继承当前Shell的环境变量,但是不继承当前Shell的其他变量

2. 直接使用脚本名执行脚本

  • 注意:前提是环境变量PATH中含有脚本路径
  • 测试过程
root@Dell-Tom:~# var1=1
root@Dell-Tom:~# export env1=1
root@Dell-Tom:~# echo "The current shell PID is" $$
The current shell PID is 564
root@Dell-Tom:~# test7
The variable var1 is
The environment variable env1 is 1
The current shell PID is 640
  • 小结:直接使用脚本名作为命令执行脚本,实际上也是新建一个Shell执行脚本中的命令,并且新建脚本会继承当前Shell的环境变量,但是不继承当前Shell的其他变量

3. 使用“. test.sh”格式命令执行脚本

  • 注意:直接使用.格式执行脚本前提是脚本在指定路径下,或者环境变量PATH中能够找到脚本。一般情况下.后面追加空格以及绝对路径相对路径都可以,不添加路径的话就是在PATH中定义的路径下寻找
  • 测试过程
root@Dell-Tom:~# var1=1
root@Dell-Tom:~# export env1=1
root@Dell-Tom:~# echo "The current shell PID is" $$
The current shell PID is 564
root@Dell-Tom:~# . script_test/test7
The variable var1 is 1
The environment variable env1 is 1
The current shell PID is 564
  • 小结:使用. test.sh格式命令执行脚本,相当于将脚本中的所有命令取出在当前Shell中顺序执行,所以有相同的环境变量、局部变量、状态变量

4. 使用“./test.sh”格式命令执行脚本

  • 注意:此格式命令实际上是.加上脚本的相对路径
  • 测试过程
root@Dell-Tom:~# var1=1
root@Dell-Tom:~# export env1=1
root@Dell-Tom:~#
root@Dell-Tom:~# echo "The current shell PID is" $$
The current shell PID is 564
root@Dell-Tom:~#
root@Dell-Tom:~# ./script_test/test7
The variable var1 is
The environment variable env1 is 1
The current shell PID is 648
  • 小结:使用.加上脚本相对路径的方式执行脚本,实际上也是新建一个Shell执行脚本中的命令,并且新建脚本会继承当前Shell的环境变量,但是不继承当前Shell的其他变量

5. 总结

①使用绝对路径执行脚本,实际上是新建一个Shell执行脚本中的命令,并且新建脚本会继承当前Shell的环境变量,但是不继承当前Shell的其他变量

②直接使用脚本名作为命令执行脚本,实际上也是新建一个Shell执行脚本中的命令,并且新建脚本会继承当前Shell的环境变量,但是不继承当前Shell的其他变量。前提是环境变量PATH中含有脚本路径

③使用. test.sh格式命令执行脚本,相当于将脚本中的所有命令取出在当前Shell中顺序执行,所以有相同的环境变量、局部变量、状态变量等。前提是脚本在当前路径下,或者环境变量PATH中能够找到脚本

④使用.加上脚本相对路径的方式执行脚本,实际上也是新建一个Shell执行脚本中的命令,并且新建脚本会继承当前Shell的环境变量,但是不继承当前Shell的其他变量


End~

发布了22 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/TomAndersen/article/details/104355679