如何用 source 在 shell 脚本里面执行另一个 shell 脚本?test1.sh 
#!/bin/bashexport string=123
echo ${string}test2.sh#!/bin/bash. ./test1.sh
echo ${string}现在只能用这种方法才能输出两个123
 test2.sh 里面如果写成 source 则不行
#!/bin/bashsource test1.sh
echo ${string}会报错 source: not found各位大神帮忙看看应该怎么做,本来想在 Makefile 里面使用 source 导出环境变量的,但是发现两个脚本都跑不通。

解决方案 »

  1.   

    source命令没有加入到环境变量里面,可以看看在哪个路径,然后把source目录加入到PATH就可以了。
      

  2.   

    关注下,这么说,source应该是在新的环境下运行了,非要保存,估计得用管道或socket或文本文件的方式
      

  3.   

    你也可以这么调用
    source test1.sh ${string}
      

  4.   

    是不是要写成source ./test1.sh
      

  5.   


    那如果 test1.sh 是在 根目录下怎么写 source .//test1.sh 吗?
      

  6.   

    source 在命令行都是可以生效的!公司服务器里面应该是设置好的!
      

  7.   

    test2.sh 应该这么写:
    #!/bin/bashbash /test1.sh
    echo ${string}你的路径写法有问题   在脚本里面不要用./和../之类的   请写完整路径!
    还有  根目录下是source /test1.sh  面不是source .//test1.sh
      

  8.   

    能够在命令行运行source ,你在脚本里面不一定source能识别到,需要看看source 在哪个路径,因为,命令行能识别,可能是因为登陆用户时候,默认运行了环境变量加载了。在~/ 或者/etc/profile下面。
      

  9.   

    source 命令是 bash 特有的。
    脚本虽然写的是 /bin/bash,但得确认 /bin/bash 是否真的是 bash 而不是其它的 shell的软连接。可以用一点 . 替换 source,比如 . test1.sh,大多数 shell 支持 . 的语法。两者功能相同。