shell与export命令
围绕以下几个问题来学习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="1" declare -x HISTSIZE="1000" declare -x HOME="/home/zszc" declare -x HOSTNAME="localhost" declare -x INPUTRC="/etc/inputrc" declare -x KDEDIR="/usr" declare -x KDE_IS_PRELINKED="1" declare -x KDE_NO_IPV6="1" 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="1" declare -x HISTSIZE="1000" declare -x HOME="/home/zszc" declare -x HOSTNAME="localhost" declare -x INPUTRC="/etc/inputrc" declare -x KDEDIR="/usr" declare -x KDE_IS_PRELINKED="1" declare -x KDE_NO_IPV6="1" 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="1" declare -x HISTSIZE="1000" declare -x HOME="/home/zszc" declare -x HOSTNAME="localhost" declare -x INPUTRC="/etc/inputrc" declare -x KDEDIR="/usr" declare -x KDE_IS_PRELINKED="1" declare -x KDE_NO_IPV6="1" 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="2" 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,那这个时候所有的变量都应该是可以随便使用的。
转载于:https://www.cnblogs.com/insane-Mr-Li/p/9099066.html
shell与export命令相关推荐
- export命令添加和删除环境变量
export命令 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量. export可新增 ...
- linux 删除桌面环境变量,linux下export命令添加、删除环境变量(转载)
export命令 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量. export可新增 ...
- Shell:export命令
https://www.cnblogs.com/tinywan/p/7224011.html 一.Windows 环境变量 1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 j ...
- shell脚本中export命令未生效,原因详解
1.问题发现 安装 jemalloc 后,执行 /usr/bin/jemalloc.sh 脚本生效环境变量 LD_PRELOAD.执行过后发现环境变量并未生效.过程如下: [root@10-27- ...
- shell中 的 export命令
export 功能说明:设置或显示环境变量. 语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量.export可新增,修改 ...
- shell export 命令
export 命令作用是 把变量导出 也可以用export来定义环境变量 导入 定义的变量 这样的话类似于python面向对象的self.变量 一样 在脚本到处调用这个变量 转载于:https://w ...
- shell的嵌入命令大全
围绕以下几点展开学习: 1.什么是shell的嵌入命令? 2.为什么使用shell? 3.怎样使用shell嵌入命令? 1.什么是shell的嵌入命令: ♦这些命令是在实际的Bourne shell里 ...
- Shell编程常用命令
shell:简单.易用.高效,是一个内置的脚本,不需下载 什么是脚本:一条一条命令的堆积 shell 是一个程序,一般都是放在/bin或者/user/bin目录下,当前 Linux 系统可用的 She ...
- Linux中使用export命令设置环境变量
Linux export 命令 2011-08-31 22:36:39| 分类: 命令总结|举报|字号 订阅 功能说明:设置或显示环境变量. ############################ ...
最新文章
- 学界 |《nature》杂志:我们有义务搞懂我们所创造出来的技术
- 装好Centos7后提示Initial setup of CentOS Linux 7 (core)
- java二叉树插入节点_[javaSE] 数据结构(二叉查找树-插入节点)
- python获取电脑几核几线程_python编程测试电脑开启最大线程数实例代码
- java输入正确的信息_判断用户输入的信息是否正确
- 基于Spring Cloud微服务化开发平台-Cloud Platform后台管理系统 v3.1.0
- cloud源码-Feign
- n维椭球体积公式_加速度计 椭球校准 (最小二乘法 椭球拟合)
- 46、练习:输出指定目录下的所有文件名称
- 看看华为 Java 编程的军规...
- 五金工具客服快捷回复消息_公众号的自动回复,这样用就能零流失!
- JVM性能优化之JVM调优
- linux系统属于操作系统吗,linux属于什么操作系统
- 【Asan】新鲜货:使用ASan检测内存越界问题
- Windows R语言(持续更新)
- 学法医的写代码,学刑侦的做运营……原来阿里人读过那些奇葩专业!
- 人牙髓干细胞,多能分化,不只用于牙齿组织再生研究
- 最新江苏水利水电安全员模拟真题及答案解析
- js实现刷新当前页面
- 高等几何——变换群与几何学8
热门文章
- Java基础常见的面试题
- 三角形旋转c语言程序,c语言图形,请高手修改,效果是一个三角形绕一点旋转一周...
- 函数不可访问_Java中的不可变总结
- 简述java异常机制处理,简述Java中的异常处理机制
- php 5范例代码查询辞典 pdf,PHP 5范例代码查询辞典
- php mysql csv_php导入csv到mysql数据库
- matplotlibpycharm
- JDBC连接MySQL数据库:建立SSL连接出现警告信息
- Scala学习笔记01:Scala概述、安装配置、简单使用
- 数据库笔记13:创建与使用游标