zoukankan      html  css  js  c++  java
  • linux shell 结构 与source 命令

    Linux Shell&环境变量

          登录到系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行 shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创 建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来说,用户可以有许多 shell,每个shell都是由某个shell(称为父shell)派生的。   
          在子shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了 一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内的一个局部变量,它的子shell不能引用它,要使某个变量的值可以在它的子shell中被 改变,可以使用export命令对已定义的变量进行输出。export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。
    例子
    编写一个C程序,这个C程序需要动态链接一个用户编写的动态库。一切编译好之后,运行可执行文件,会发现系统提示无法找到动态链接库。好的,你发现原来没有将这个动态库的路径加入到LD_LIBRARY_PATH中。但是,加好之后,系统仍然提示无法找到动态库。这是什么缘故呢?当用export LD_LIBRARY_PATH命令后,再运行可执行文件,成功了!由此推测,linux shell在运行可执行程序的时候,也会产生一个子shell。
     
    Source命令
        source命令执行一个脚本时,不会产生一个子shell,而是在当前的shell环境中运行。比如您在一个脚本里export $KKK=111 ,假如您用./a.sh执行该脚本,执行完毕后,您运行 echo $KKK ,发现没有值,假如您用source来执行 ,然后再echo ,就会发现KKK=111。因为调用./a.sh来执行shell是在一个子shell里运行的,所以执行后,结构并没有反应到父shell里,但是 source不同他就是在本shell中执行的,所以能够看到结果。
  • 相关阅读:
    阿里HBase高可用8年“抗战”回忆录
    Service Mesh 初体验
    阿里云HBase推出普惠性高可用服务,独家支持用户的自建、混合云环境集群
    Ververica Platform-阿里巴巴全新Flink企业版揭秘
    深度 | 带领国产数据库走向世界,POLARDB底层逻辑是什么?
    AI加持的阿里云飞天大数据平台技术揭秘
    Nacos 常见问题及解决方法
    数据上云,应该选择全量抽取还是增量抽取?
    一文带你了解 Flink Forward 柏林站全部重点内容
    Oracle数据库中序列(SEQUENCE)的用法详解
  • 原文地址:https://www.cnblogs.com/linghuaichong/p/4283425.html
Copyright © 2011-2022 走看看