• [转]shell中 source命令即点空格后面再跟可执行文件的说明


    这里记录的是在一个shell脚本里面使用
    . ./file.sh 和
    ./file.sh 的区别,本文参考了http://www.lslnet.com/linux/dosc1/39/linux-283534.htm (这个蓝森林的东西应该是来源于chinaunix)


    来个小实验
    场景一:
    vi file1.sh
    ./file2.sh
    echo $NIVEK

    vi file2.sh
    NIVEK=goupi
    export NIVEK

    chmod 755 file1.sh file2.sh

    $./file1.sh
                      //没有任何输出
    $

    场景二:
    vi 1file.sh
    . ./2file.sh
    echo $NIVEK

    vi 2file.sh
    NIVEK=goupi
    export NIVEK

    chmod 755 1file.sh 2file.sh

    $./1file.sh
    goupi              //在2file.sh里面export 的变量NIVEK的值
    $

    由此可以看到它们的区别,即
    ./file.sh  将重启一个新的子shell来执行它,所以如果在file.sh中定义的一些变量(export)只在子shell有作用,返回后将失去作用.

    . ./file.sh 不启动新的shell,在当前shell中执行,所以在file.sh中定义的变量返回后依然有作用.


    再看一下这个简单的例子:
    cat 1.sh 
    #!/bin/bash
    sleep 1
    exit 1

    cat test1.sh 
    #!/bin/bash
    ./1.sh
    echo "can you see me"

    cat test2.sh 
    #!/bin/bash
    . ./1.sh
    echo "can you see me"

    分别执行test1.sh, test2.sh从它们的区别里面可以看到一些不同

    reference:

    http://blog.chinaunix.net/uid-20652643-id-1906458.html

  • 相关阅读:
    HTML技巧: 语义化你的代码
    css sprite
    Redis主从复制原理
    idea修改快捷键
    Ubuntu14.20 安装docker,创建centos6.7容器,并访问centos容器
    [转]SQL 中 with as 的用法
    ftp与sftp及sftp和scp的区别
    Linux top 命令
    Linux free 命令
    ubuntu 源方式 安装jdk
  • 原文地址:https://www.cnblogs.com/galoishelley/p/4483850.html
Copyright © 2020-2023  润新知