围绕以下几个问题来学习export命令:

1.什么是export命令?

2.为什么要用export命令?

3.怎么使用export命令?

1.什么是export命令?

  ♦ 用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行 shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一 个是系统为运行脚本程序创建的shell。当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来 说,用户可以有许多 shell,每个shell都是由某个shell(称为父shell)派生的。
在子 shell中定义的变量只在该子shell内有效。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内 的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。 export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。
[例]在本例中,变量myfile是在dispfile脚本程序中定义的。然后用export命令将变量myfile输出至任何子shell,例如当执行printfile脚本程序时产生的子shell。printfile脚本程序时产生的子shell。

2.为什么要用export命令?  

   为了是是我们定义一个变量时可以在子shell中被调用,而不需要重复去定义。

3.怎么使用export命令?

  解释:♦Linux export命令用于设置或显示环境变量。

    ♦在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该次登陆操作。

  语法:

export [-fnp][变量名称]=[变量设置值]

  参数说明

-f  代表[变量名称]中为函数名称。
-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p  列出所有的shell赋予程序的环境变量。

实例

列出当前所有的环境变量

[root@localhost ~]# export -p
declare -x CVS_RSH="ssh"
declare -x G_BROKEN_FILENAMES=""
declare -x HISTSIZE=""
declare -x HOME="/home/zszc"
declare -x HOSTNAME="localhost"
declare -x INPUTRC="/etc/inputrc"
declare -x KDEDIR="/usr"
declare -x KDE_IS_PRELINKED=""
declare -x KDE_NO_IPV6=""
declare -x LANG="zh_CN.UTF-8"
declare -x LC_ALL="zh_CN.GBK"
declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:"
declare -x MAIL="/var/spool/mail/root"
declare -x OLDPWD
declare -x PATH="/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/home/zszc/zpp/weblogic/weblogic103/user_projects/domains/zszc_7008_domain/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/zszc/bin"
declare -x PWD="/home/zszc"
declare -x QTDIR="/usr/lib64/qt-3.3"
declare -x QTINC="/usr/lib64/qt-3.3/include"
declare -x QTLIB="/usr/lib64/qt-3.3/lib"

定义环境变量;

[root@localhost ~]# export laolao#定义环境变量
[root@localhost ~]# export -p
declare -x CVS_RSH="ssh"
declare -x G_BROKEN_FILENAMES=""
declare -x HISTSIZE=""
declare -x HOME="/home/zszc"
declare -x HOSTNAME="localhost"
declare -x INPUTRC="/etc/inputrc"
declare -x KDEDIR="/usr"
declare -x KDE_IS_PRELINKED=""
declare -x KDE_NO_IPV6=""
declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass"
declare -x SSH_CLIENT="192.168.113.206 17527 22"
declare -x SSH_CONNECTION="192.168.113.206 17527 192.168.44.33 22"
declare -x SSH_TTY="/dev/pts/1"
declare -x TERM="vt100"
declare -x USER="root"
declare -x a="echo hollo li"
declare -x b="echo hollo qiang"
declare -x c="echo huahua"
declare -x laolao
declare -x test="value1"

定义环境变量赋值

[root@localhost ~]# export laolao=2
[root@localhost ~]# export -p
declare -x CVS_RSH="ssh"
declare -x G_BROKEN_FILENAMES=""
declare -x HISTSIZE=""
declare -x HOME="/home/zszc"
declare -x HOSTNAME="localhost"
declare -x INPUTRC="/etc/inputrc"
declare -x KDEDIR="/usr"
declare -x KDE_IS_PRELINKED=""
declare -x KDE_NO_IPV6=""
declare -x LANG="zh_CN.UTF-8"
declare -x LC_ALL="zh_CN.GBK"
declare -x TERM="vt100"
declare -x USER="root"
declare -x a="echo hollo li"
declare -x b="echo hollo qiang"
declare -x c="echo huahua"
declare -x laolao=""
declare -x test="value1"
[root@localhost ~]#

  ♦得 出的结论是:

    •1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出;

    •2、一个shell中的系统环境变量才会被复制到子 shell中(用export定义的变量);

    •3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失 (并不能返回到父shell中)。

    •4、不用export定义的变量只对该shell有效,对子shell也是无效的。

实例:

[root@localhost ~]# vim liqiang.sh
export a='echo hollo li'
b='echo hollo qiang'
./liqiang-3.sh
[root@localhost ~]# vim liqiang-3.sh
echo 看看这里调用几次
echo 调用一次就对了
echo $a
echo $b
bash

输出结果:

[root@localhost ~]# ./liqiang.sh
看看这里调用几次
调用一次就对了
echo hollo li

实例2:在子shell中定义变量,在父shell中调用。

[root@localhost ~]# vim liqiang-3.sh
echo 看看这里调用几次
echo 调用一次就对了
echo $a
echo $b
c='echo huahua'
bash
~
root@localhost ~]# vim liqiang.sh
export a='echo hollo li'
export b='echo hollo qiang'
./liqiang-3.sh
echo $c

运行结果:

[root@localhost ~]# ./liqiang.sh
看看这里调用几次
调用一次就对了
echo hollo li
echo hollo qiang
#c没有被调用
[root@localhost ~]#

实例3:在子shell中用export导出依然不会被父shell调用c

[root@localhost ~]# vim liqiang-3.sh
echo 看看这里调用几次
echo 调用一次就对了
echo $a
echo $b
export c='echo huahua'
bash

运行结果:

[root@localhost ~]# ./liqiang.sh
看看这里调用几次
调用一次就对了
echo hollo li
echo hollo qiang
[root@localhost ~]#

对source这块理解的还不是很清,只知道source把多有的脚本都拉进一个shell中进行执行,只有有一个PID,那这个时候所有的变量都应该是可以随便使用的。

shell与export命令的更多相关文章

  1. Linux从入门到进阶全集——【第十四集:Shell编程-export命令】

    参考: https://www.cnblogs.com/guojun-junguo/p/9855356.html 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量 ...

  2. shell 的 export命令

    export 功能说明:设置或显示环境变量.语 法:export [-fnp][变量名称]=[变量设置值]补充说明:在shell中执行程序时,shell会提供一组环境变量.export可新增,修改或删 ...

  3. linux source命令与export命令的区别

    shell与export命令 用户登录到Linux系统后,系统将启动一个用户shell.在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序.运行shell脚本程序 ...

  4. linux下export命令添加、删除环境变量(转载)

    转自:http://blog.csdn.net/shenshendeai/article/details/49794699 export命令 功能说明:设置或显示环境变量. 语 法:export [- ...

  5. shell export 命令

    export 命令作用是 把变量导出 也可以用export来定义环境变量 导入 定义的变量 这样的话类似于python面向对象的self.变量 一样 在脚本到处调用这个变量

  6. Bash Shell内建命令和保留字

    Bash Shell内建命令和保留字命令含义!保留字,逻辑非:不做任何事,只做参数展开.读取文件并在shell中执行它alias设置命令或命令行别名bg将作业置于后台运行bind将关键字序列与read ...

  7. [置顶] export命令-linux

    export 命令 功能说明: 设置或显示环境变量. 语 法: export [-fnp][变量名称]=[变量设置值] 补充说明: 在shell中执行程序时,shell会提供一组环境变量. expor ...

  8. Shell 脚本常用命令

    Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook.在工作过程中整理了一下,贴在这里已备查看. 1           Shell中的特殊符号 ...

  9. Linux中使用export命令设置环境变量

    Linux export 命令 2011-08-31 22:36:39|  分类: 命令总结|举报|字号 订阅     功能说明:设置或显示环境变量. ######################## ...

随机推荐

  1. Nginx Rewrite详解

    Nginx Rewrite详解 引用链接:http://blog.cafeneko.info/2010/10/nginx_rewrite_note/ 原文如下: 在新主机的迁移过程中,最大的困难就是W ...

  2. python---haproxy---文件操作

    haproxy 文件操作,操作属于简单操作,不复杂 # -*- coding:utf-8 -*- # LC def search(*args): #查找Haproxy文件中的服务器 list1 = [ ...

  3. Spring MVC “404 Not Found”错误的解决

    一般这个问题发生的原因不会出在Web.xml配置文件的Servlet URL映射部分,因为这个URL映射做JavaWeb的人经常配置不会发生错误,而且此处的这个映射自由度很大,可以有目录字符串,也可以 ...

  4. python做量化交易干货分享

    http://www.newsmth.NET/nForum/#!article/Python/128763 最近程序化交易很热,量化也是我很感兴趣的一块. 国内量化交易的平台有几家,我个人比较喜欢用的 ...

  5. MFC学习问题总结

    1.学习MFC添加位图,无法获取其ID 1).点击视图->其他窗口->资源视图,你会发现“无法在此窗口显示”,找到resource.h文件,关闭即可重新走一遍上面的过程就会发现可以打开了. ...

  6. 黄文俊:Serverless小程序后端技术分享

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 黄文俊,现任腾讯云SCF无服务器云函数高级产品经理,多年企业级系统开发和架构工作经验,对企业级存储.容器平台.微服务架构.无服务器计算等领域 ...

  7. python笔记:#008#变量的命名

    变量的命名 目标 标识符和关键字 变量的命名规则 0.1 标识符和关键字 1.1 标识符 标示符就是程序员定义的 变量名.函数名 名字 需要有 见名知义 的效果,见下图: 标示符可以由 字母.下划线 ...

  8. 【转】Python的下划线

    原文: 1. Python中的下划线(译文) 2. [转]关于python中带下划线的变量和函数的意义 总结: 1. 单下划线开头.保护变量,不可被其他包导入使用,除非在__all__声明可以显示引用 ...

  9. jieba库分词

    (1)团队简介的词频统计 import jieba import collections s="制作一个购票小程序,这个购票小程序可以根据客户曾经的购票历史" s+="和 ...

  10. 洛谷 P1462 解题报告

    P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...