shell脚本执行source报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本执行source报错相关的知识,希望对你有一定的参考价值。

参考技术A 在Ubuntu 16.04机器在执行shell脚本时,报source: not found
原因是shell脚本执行的时候用的不是bash,而是dash,可以使用下面方法修改。

出现对话框后,选择no,再查看一次

重新执行脚本,问题解决

shell 脚本各种执行方式(source ./*.sh, . ./*.sh, ./*.sh)的区别

结论一: ./*.sh的执行方式等价于sh ./*.sh或者bash ./*.sh,此三种执行脚本的方式都是重新启动一个子shell,在子shell中执行此脚本。

结论二: .source ./*.sh和 . ./*.sh的执行方式是等价的,即两种执行方式都是在当前shell进程中执行此脚本,而不是重新启动一个shell 而在子shell进程中执行此脚本。

验证依据:没有被export导出的变量(即非环境变量)是不能被子shell继承的

验证结果:

 

[[email protected] ~]#name=hashlinux       //定义一般变量  

[[email protected] ~]# echo ${name}  

hashlinux  

[[email protected] ~]# cat test.sh      //验证脚本,实例化标题中的./*.sh  

#!/bin/sh  

echo ${name}  

[[email protected] ~]# ls -l test.sh    //验证脚本可执行  

-rwxr-xr-x 1 root root 23 Feb  6 11:09 test.sh  

[[email protected] ~]# ./test.sh        //以下三个命令证明了结论一  

  

[[email protected] ~]# sh ./test.sh  

  

[[email protected] ~]# bash ./test.sh  

  

[[email protected] ~]# . ./test.sh     //以下两个命令证明了结论二  

hashlinux  

[[email protected] ~]# source ./test.sh  

hashlinux  

[[email protected] ~]#  


本文出自 “江湖笑笑生” 博客,请务必保留此出处http://hashlinux.blog.51cto.com/9647696/1791564

以上是关于shell脚本执行source报错的主要内容,如果未能解决你的问题,请参考以下文章

执行shell脚本三种方法的区别:(sh、exec、source)

shell 在脚本中执行了source /etc/profile 不生效

shell 脚本各种执行方式(source ./*.sh, . ./*.sh, ./*.sh)的区别

shell命令中用source 和sh(或者bash)执行脚本的区别,以及export的作用

shell命令中用source 和sh(或者bash)执行脚本的区别,以及export的作用

source命令