Linux环境变量export命令笔记231207

2023-12-08 06:30

本文主要是介绍Linux环境变量export命令笔记231207,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Linux环境变量export命令笔记231207

export定义的变量

  • export使变量在"子Shell"也起作用
  • 只在本控制台本次会话起效, 另开一个控制台无效
  • 关闭控制台(关闭本次会话,exit)后失效,
  • 子shell中export的变量,不会在父Shell起作用,制作子子Shell,子子孙孙Shell中起作用
  • declare -x等效export
    设值时: export name=value效果等同declare -x name=value
    查看时: declare -xexport 列出的内容相同
典型例子,修改PATH
export PATH=$PATH:/XXXXXXX

👆等效👇

declare -x PATH=$PATH:/XXXXXXX
export 的作用是: 子Shell也生效

export的作用是将局部变量导出为环境变量,或直接定义环境变量, 环境变量与局部变量的区别就是:

  • 环境变量可以在子子孙孙Shell中继续发挥作用,
  • 局部变量只在本Shell中起作用

定义一个变量,在本Shell可以查看该变量, 但用sh或者bash命令进入子shell后就看不到该变量了

定义一个变量例如: Hello=World (等号左右不能有空格)

Hello=World

查看Hello的值 可以看到结果是World

echo $Hello ### 结果是:World

进入子Shell就看不到这个值了

bash  ### 进入子Shell
echo $Hello ### 输出空行,没有这个变量

exit回到上级Shell, 又可以看到了

exit   ### 回到上级Shell
echo $Hello ### 结果是:World

env命令可以查看环境变量,
在没有export之前,env是看不到定义的变量的
export之后就能看到了

env | grep Hello   ###找不到
export Hello   ###导出Hello为环境变量
env | grep Hello   ###找到:Hello=World

export -p命令也可以查看环境变量,
在没有export之前,export -p是看不到定义的变量的
export之后就能看到了

export -p | grep Hello   ###找不到
export Hello   ###导出Hello为环境变量
export -p | grep Hello   ###找到: declare -x Hello="World"

实例:

[z@vb-f39 /]$ echo $Hello[z@vb-f39 /]$ Hello=World
[z@vb-f39 /]$ echo $Hello
World
[z@vb-f39 /]$ sh
sh-5.2$ echo $Hellosh-5.2$ exit
exit
[z@vb-f39 /]$ echo $Hello
World
[z@vb-f39 /]$ bash
[z@vb-f39 /]$ echo $Hello[z@vb-f39 /]$ exit
exit
[z@vb-f39 /]$ echo $Hello
World
[z@vb-f39 /]$ env | grep Hello
[z@vb-f39 /]$ export Hello
[z@vb-f39 /]$ env | grep Hello
Hello=World
[z@vb-f39 /]$ sh
sh-5.2$ echo $Hello
World
sh-5.2$ exit
exit
[z@vb-f39 /]$ bash
[z@vb-f39 /]$ echo $Hello
World
[z@vb-f39 /]$ exit
exit
[z@vb-f39 /]$ echo $Hello
World
[z@vb-f39 /]$ env | grep Hello
Hello=World





export 的 参数

  • -f  代表[变量名称]中为函数名称。
  • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
  • -p  列出所有的shell赋予程序的环境变量。
    选项:-f        所指代的是 shell 函数-n        删除每个 <名称>"导出" 属性-p        显示所有导出的变量和函数的列表





env , export , declare , set

在Linux中,envexportsetdeclare命令都与环境变量相关,但它们之间有一些区别:

  1. env命令:

    • env命令用于显示当前环境中的环境变量及其值。它打印出当前shell会话中定义的所有环境变量及其对应的值。
  2. export命令:

    • export命令用于设置和导出环境变量,使其在当前shell会话及其子进程中可用。它可以将一个变量标记为环境变量,并将其导出到后续执行的命令或脚本中。使用export命令定义的变量将成为环境变量,并可在整个会话中使用。
    • 即可设置又可查看, export 或 export -p用于查看环境变量, 效果相同
  3. set命令:

    • set命令用于设置和显示shell变量的值。它不仅可以设置环境变量,还可以设置其他类型的shell变量(如局部变量和位置参数)。set命令可以更广泛地用于配置和管理shell会话中的变量。
  4. declare命令:

    • declare命令用于声明shell变量并设置其属性。它可以创建新的变量或修改现有变量的属性,如整数属性、只读属性等。虽然declare也可以用于设置环境变量,但它提供更多选项来控制变量的行为和特性。

总结:

  • env用于显示当前环境变量。
  • export用于设置和导出环境变量。
  • set用于设置和显示shell变量的值。
  • declare用于声明shell变量并设置其属性。
查看的异同
envexportdeclare -x可查看环境变量 , setdeclare可查看环境变量和局部变量
  • envexportdeclare -x可查看环境变量
    envexport 列出的条目数相同, 排版样式不同
    export -pexportdeclare -x 列出的内容完全相同
  • setdeclare可查看环境变量和局部变量
    无参的 setdeclare 功能相同, 但没法比较,因为有些变量在变化, 连续执行set命令或连续执行declare命令获得的结果都稍有差异
export -pexportdeclare -xdeclare -x -p 列出的内容完全相同

测试代码:

st001=$(declare -x) ; st002=$(export -p) ;  st003=$(export) ;if [[ $st001 == $st002 ]] ; then  echo yes; else echo no; fiif [[ $st001 == $st003 ]] ; then  echo yes; else echo no; fi

上面代码的结果应该是两行 “yes”
在判断中用$取值时, 最好加上双引号, 上面的测试虽然通过了, 但如果内容很多很杂时就出错了, 最好加上双引号

st001=$(declare -x) ; st002=$(export -p) ;  st003=$(export) ;if [[ "$st001" == "$st002" ]] ; then  echo yes; else echo no; fiif [[ "$st001" == "$st003" ]] ; then  echo yes; else echo no; fi

实例:

[z@vb-f39 /]$ st001=$(declare -x)
[z@vb-f39 /]$ st002=$(export -p)
[z@vb-f39 /]$ st003=$(export)
[z@vb-f39 /]$ if [[ $st001 == $st002 ]] ; then  echo yes; else echo no; fi
yes
[z@vb-f39 /]$ if [[ $st001 == $st003 ]] ; then  echo yes; else echo no; fi
yes

用单括号也可以

st001=$(declare -x) ; st002=$(export) ; st003=$(export -p) ; st004=$(declare -x -p) ; st005=$(declare -xp)if [ "$st001" == "$st002" ] ; then  echo yes; else echo no; fiif [ "$st001" == "$st003" ] ; then  echo yes; else echo no; fiif [ "$st001" == "$st004" ] ; then  echo yes; else echo no; fiif [ "$st001" == "$st005" ] ; then  echo yes; else echo no; fi

用单等号也可以

st001=$(declare -x) ; st002=$(export) ; st003=$(export -p) ; st004=$(declare -x -p) ; st005=$(declare -xp)if [ "$st001" = "$st002" ] ; then  echo yes; else echo no; fiif [ "$st001" = "$st003" ] ; then  echo yes; else echo no; fiif [ "$st001" = "$st004" ] ; then  echo yes; else echo no; fiif [ "$st001" = "$st005" ] ; then  echo yes; else echo no; fi

双中括号也能用单等号

st001=$(declare -x) ; st002=$(export) ; st003=$(export -p) ; st004=$(declare -x -p) ; st005=$(declare -xp)if [[ "$st001" = "$st002" ]] ; then  echo yes; else echo no; fiif [[ "$st001" = "$st003" ]] ; then  echo yes; else echo no; fiif [[ "$st001" = "$st004" ]] ; then  echo yes; else echo no; fiif [[ "$st001" = "$st005" ]] ; then  echo yes; else echo no; fi

也可以用test, 也是单等号双等会效果相同

st001=$(declare -x) ; st002=$(export) ; st003=$(export -p) ; st004=$(declare -x -p) ; st005=$(declare -xp)if test  "$st001" = "$st002"  ; then  echo yes; else echo no; fiif test  "$st001" = "$st003"  ; then  echo yes; else echo no; fiif test  "$st001" = "$st004"  ; then  echo yes; else echo no; fiif test  "$st001" = "$st005"  ; then  echo yes; else echo no; fi

单双中括号用单双等号比较字符串是否相等, 用-eq比较整数是否相等

没法用双小括号比较字符串, 双小括号只能比较整数

LinuxShell的 中括号[], 双中括号[[]], 双小括号(()) 笔记231207

设值的异同
  • export name=value 等效 declare -x name=value

这篇关于Linux环境变量export命令笔记231207的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/468863

相关文章

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

Linux权限管理与ACL访问控制详解

《Linux权限管理与ACL访问控制详解》Linux权限管理涵盖基本rwx权限(通过chmod设置)、特殊权限(SUID/SGID/StickyBit)及ACL精细授权,由umask决定默认权限,需合... 目录一、基本权限概述1. 基本权限与数字对应关系二、权限管理命令(chmod)1. 字符模式语法2.

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Linux线程同步/互斥过程详解

《Linux线程同步/互斥过程详解》文章讲解多线程并发访问导致竞态条件,需通过互斥锁、原子操作和条件变量实现线程安全与同步,分析死锁条件及避免方法,并介绍RAII封装技术提升资源管理效率... 目录01. 资源共享问题1.1 多线程并发访问1.2 临界区与临界资源1.3 锁的引入02. 多线程案例2.1 为

Win10安装Maven与环境变量配置过程

《Win10安装Maven与环境变量配置过程》本文介绍Maven的安装与配置方法,涵盖下载、环境变量设置、本地仓库及镜像配置,指导如何在IDEA中正确配置Maven,适用于Java及其他语言项目的构建... 目录Maven 是什么?一、下载二、安装三、配置环境四、验证测试五、配置本地仓库六、配置国内镜像地址

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Linux如何查看文件权限的命令

《Linux如何查看文件权限的命令》Linux中使用ls-R命令递归查看指定目录及子目录下所有文件和文件夹的权限信息,以列表形式展示权限位、所有者、组等详细内容... 目录linux China编程查看文件权限命令输出结果示例这里是查看tomcat文件夹总结Linux 查看文件权限命令ls -l 文件或文件夹

idea的终端(Terminal)cmd的命令换成linux的命令详解

《idea的终端(Terminal)cmd的命令换成linux的命令详解》本文介绍IDEA配置Git的步骤:安装Git、修改终端设置并重启IDEA,强调顺序,作为个人经验分享,希望提供参考并支持脚本之... 目录一编程、设置前二、前置条件三、android设置四、设置后总结一、php设置前二、前置条件

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方