zoukankan      html  css  js  c++  java
  • shell中sh, exec, source, fork, ./的区别

    shell中sh, exec, source, fork, ./的区别

    1,sh

    sh test.sh
    

    ​ sh是通过创建子进程(subshell)去执行脚本,父进程无法使用子进程中的变量,而子进程对环境变量的修改也不会影响到父进程。父进程中的局部变量子进程也无法使用,子进程会继承父进程的环境变量;

    脚本不需要执行权限

    2,exec

    exec + command
    ./test.sh exec
    

    ​ 使用exec执行脚本,被执行的脚本会继承当前shell的环境变量,exec相当于创建了新进程,它会将主进程的进程资源占用,使用主进程的pid,而exec语句执行完之后,后续的语句不再执行;
    脚本需要执行权限

    3,source

    source test.sh
    

    ​ 使用source或者“.”来调用外部脚本,不会产生新的进程,继承当前shell环境变量,而且被调用的脚本运行结束后,它拥有的环境变量和声明变量会被当前shell保留,类似将调用脚本的内容复制过来直接执行。执行完毕后原主shell继续运行。

    脚本不需要执行权限

    4,fork

    ./test fork
    

    ​ 使用fork执行脚本的时候会创建一个子进程去执行该脚本,子进程会继承父进程的环境变量和声明变量。当子进程执行完毕后会返回父进程,但是父进程的环境变量不会因子进程的改变而改变。

    脚本需要执行权限

    5,./

    ./test.sh
    

    ​ 创建一个子进程去执行脚本

    脚本需要执行权限

    参考链接:

    https://blog.csdn.net/w616589292/article/details/50854273

    http://www.cnblogs.com/pcat/p/5467188.html

    https://blog.csdn.net/bigdatahappy/article/details/40114787

  • 相关阅读:
    Mysql基础
    Mysql基础2
    Windows CMD命令大全
    python 调试方法
    LDAP
    Linux 内核与模块调试
    Linux tee命令
    Linux kgdb命令
    OpenSSL基础知识
    Linux top命令
  • 原文地址:https://www.cnblogs.com/cord/p/9226498.html
Copyright © 2011-2022 走看看