首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在bash脚本中导出env var不会影响env?

在bash脚本中导出环境变量(env var)不会影响环境的原因是因为脚本在单独的子进程中运行,而子进程无法修改父进程的环境变量。

当我们在bash脚本中使用export命令导出一个环境变量时,实际上是将该变量添加到当前脚本进程的环境中。这意味着该变量只在当前脚本进程及其子进程中可见,而不会影响到父进程或其他兄弟进程。

当脚本执行完毕后,脚本进程及其子进程会被销毁,导出的环境变量也随之消失。因此,即使在脚本中导出了环境变量,对于其他终端会话或进程来说,这些变量仍然是不可见的。

如果我们希望在脚本执行后,导出的环境变量仍然对整个系统可见,可以考虑使用source命令或.运算符来运行脚本。这样脚本将在当前shell进程中执行,而不是创建一个新的子进程,从而可以修改当前shell进程的环境变量。

总结起来,bash脚本中导出的环境变量只在当前脚本进程及其子进程中可见,不会影响到父进程或其他兄弟进程。如果希望导出的环境变量对整个系统可见,可以使用source命令或.运算符来运行脚本。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云产品:云服务器(https://cloud.tencent.com/product/cvm)
  • 腾讯云产品:云函数(https://cloud.tencent.com/product/scf)
  • 腾讯云产品:容器服务(https://cloud.tencent.com/product/tke)
  • 腾讯云产品:弹性伸缩(https://cloud.tencent.com/product/as)
  • 腾讯云产品:云数据库 MySQL 版(https://cloud.tencent.com/product/cdb_mysql)
  • 腾讯云产品:云存储(https://cloud.tencent.com/product/cos)
  • 腾讯云产品:人工智能(https://cloud.tencent.com/product/ai)
  • 腾讯云产品:物联网通信(https://cloud.tencent.com/product/iotexplorer)
  • 腾讯云产品:移动推送(https://cloud.tencent.com/product/umeng_push)
  • 腾讯云产品:区块链服务(https://cloud.tencent.com/product/baas)
  • 腾讯云产品:元宇宙(https://cloud.tencent.com/product/metaspace)
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

shell基础教程4-变量详细讲解

普通变量也可称为局部变量,只能在创建它们的Shell函数 或 Shell脚本 中使用。普通变量 一般由开发者开发脚本程序时创建。...默认情况下,bash Shell不会区分变量类型 的,例如常见的变量类型为整数、字符串等。这和其他强类型语言(比如C语言等)是有区别的。...环境变量 环境变量一般是指用export内置命令导出的变量(运行export -p可以查看)。 所有的环境变量都是系统全局变量,可用于所有子进程,这包括编辑器、Shell脚本和各类应用。...将环境变量放入上述的文件后,每次用户登录时这些变量都将被初始化。 按照系统规范,所有环境变量的名字均采用大写形式 。将环境变量应用于用户进程程序之前,都应该用export命令导出定义。...其中set -o会显示bash shell的所有参数配置信息。 env命令只会显示全局变量。 declare命令会输出所有的变量、函数、整数和已经导出的变量。

67420
  • _Shell 脚本入门

    一、Shell是什么1.1 我们为什么要学习Shell和使用Shell? Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。...linux中有很多类型的shell,不同的shell具备不同的功能,shell还决定了脚本函数的语法,Linux默认的shell是 /bash/shell ( 重点\默认 ),流行的还有 /bin...HOME,PWD,SHELL,USER env命令查看当前所有的全局变量  set查看当前所有变量 明显比env命令后得到的变量要多! ...需要先声明一个局部变量,然后再通过export 导出为一个全局变量 bash修改全局变量,只会再当前环境中生效,不会影响bash环境,哪怕是你增加 export 也依然不会影响到父bash环境.../bin/bash echo $txt shell脚本中使用变量,同样遵循全局和局部变量的规则3.3 只读变量和撤销变量只读变量 shell,只读变量相当于是常量,定义之后不允许修改。

    14220

    Shell 脚本入门

    一、Shell是什么 1.1 我们为什么要学习Shell和使用Shell? Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。...linux中有很多类型的shell,不同的shell具备不同的功能,shell还决定了脚本函数的语法,Linux默认的shell是 /bash/shell ( 重点\默认 ),流行的还有 /bin...需要先声明一个局部变量,然后再通过export 导出为一个全局变量 bash修改全局变量,只会再当前环境中生效,不会影响bash环境,哪怕是你增加 export 也依然不会影响到父bash环境.../bin/bash echo $txt shell脚本中使用变量,同样遵循全局和局部变量的规则 3.3 只读变量和撤销变量 只读变量 shell,只读变量相当于是常量,定义之后不允许修改...,存在一些特殊变量,他们具有特殊的意义 $n n 代表接受参数, n 是数字,代表执行脚本时候传递的参数数量,例如 1-9 代表第一个到第九个参数,十以上的数字,可以使用大括号包裹,例如 {10}

    28440

    Shell 简明教程

    2. bash 启动 bash 启动脚本bash 启动时会自动执行的脚本,因此用户可以把一些环境变量的设置和 alias、umask 设置等放到启动脚本,这样每次启动 shell 时都会自动生效。...这种 shell 启动时自动执行 ~/.bashrc 脚本。 因此,如果要在启动脚本做某些设置,使它在图形终端窗口和字符终端的Shell中都起作用,最好就是 ~/.bashrc 设置。...非交互式启动 为了执行脚本而 fork 出来的子 Shell 是非交互式 Shell,启动时执行的脚本文件有环境变量 BASH_ENV 定义,相当于执行下面的命令: if [ -n "$BASH_ENV...if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi 以 #! /bin/sh 开头的脚本就是这种情况,不会运行任何脚本。 3....Shell函数没有参数列表并不表示不能传参数,事实上,函数就像是迷你脚本,调用函数时可以传任意个参数,函数内同样是用 0 、 1 、 2 等变量来提取参数,函数的位置参数相当于函数的局部变量,改变这些变量并不会影响函数外面的

    2.1K40

    分享一次Linux任务计划crontab不执行的问题排查过程

    直接执行成功,而放到 crontab 就失败,经验告诉我肯定的脚本环境变量有问题了! ②、环境变量 于是脚本里面载入环境变量: #!...原来改完这个 sudo 并不会影响已经运行的 crontab,所以需要重启 crontab 服务刷新下设置: service crond restart 这下终于可以了!.../log/cron 或 /var/log/messages,如果里面没有发现执行记录,那么可以重启下这个服务:service crond restart ②、检查脚本的执行权限 一般来说, crontab...建议使用 sh 或 bash 来执行 shell 脚本,避免因脚本文件的执行权限丢失导致任务失败。...当然,要记住在 crontab 如果屏蔽了错误信息,就不会发邮件了。

    2.6K30

    CentOS中环境变量和配置文件

    即允许在内存存储数据,使得程序或shell运行的脚本能够访问它们。...bash shell,环境变量分为两类: 全局变量 局部变量 全局环境变量 全局环境变量对于shell会话和所有生成的子shell都是可见的。局部变量则只对创建它们的shell可见。...而子shell修改该变量,父shell不受影响。 如果在子shell设置环境变量,想要在父shell读取呢?...一个使用场景是:多个执行脚本依赖于共同的环境配置,这个配置写在一个env.sh脚本里,如何使其他执行脚本可以读取到env.sh里变量?子shellexport变量,并不能影响到父shell。...这两个命令都以一个脚本为参数,该脚本将作为当前shell的环境执行,即不会启动一个新的子进程。所有脚本设置的变量将成为当前Shell的一部分。

    1.8K20

    CentOS中环境变量与配置文件的深入讲解

    即允许在内存存储数据,使得程序或shell运行的脚本能够访问它们。...bash shell,环境变量分为两类: 全局变量 局部变量 全局环境变量 全局环境变量对于shell会话和所有生成的子shell都是可见的。局部变量则只对创建它们的shell可见。...而子shell修改该变量,父shell不受影响。 如果在子shell设置环境变量,想要在父shell读取呢?...一个使用场景是:多个执行脚本依赖于共同的环境配置,这个配置写在一个env.sh脚本里,如何使其他执行脚本可以读取到env.sh里变量?子shellexport变量,并不能影响到父shell。...这两个命令都以一个脚本为参数,该脚本将作为当前shell的环境执行,即不会启动一个新的子进程。所有脚本设置的变量将成为当前Shell的一部分。

    2.2K21

    Linux环境变量【终】

    ✈️main函数参数   main函数其实还存在一个参数:char *env[],和 argv类似,也是一个指针数组,不同的是 env的每一个指针指向的是每一行的环境变量!   ...我们来看一个有趣的现象:   export 我们刚刚学过,是导出自定义环境变量的命令,可以下面这个 HEHE 为什么不使用export也能定义出来?它也是环境变变量吗?而且还能被echo识别?...其实,这个变量叫做 本地变量,至于为什么本地变量不能被getenv获取,这是因为 本地变量不是环境变量,本地变量只bash有效,子进程不会继承本地变量。...存储位置 环境变量通常存储系统级别的配置文件 本地变量则只存在于当前 shell 进程的运行环境 继承性 环境变量可以被子进程继承并使用,对系统中所有的进程都是全局可见的 本地变量不能被子进程继承...我来带大家看一看:   Linux操作系统的家目录当中,隐藏文件有这样一个文件:.bash_profile文件,我们打开这个文件:   其实这就是一个脚本文件,用来导入环境变量,系统启动时,bash

    9210

    高效的Shell编程建议及入坑

    #系统变量于环境变量 source /etc/profile #系统环境变量 export PATH=$PATH:/app/bin #用readonly声明静态变量 #静态变量不会改变;它的值一旦脚本定义后就不能被修改...9)请勿再脚本硬编码敏感信息 描述:不要把密码硬编码脚本里,不要把密码硬编码脚本里,不要把密码硬编码脚本里。.../usr/bin/env bash VAR1="123" VAR2="VAR1" #VAR2的值是VAR1的名字,那么我们现在想通过VAR2来获取VAR1的值,这时候应该怎么办呢?...11)脚本中有命令运行失败时/未声明变量时候退出脚本 如果脚本某条命令运行失败,我们不应该让其继续运行,因为这样可能会影响脚本的其余部分,导致逻辑错误。...: 可作为预定义变量使得不将变量的字符串作为命令执行; 命令使用1: # 差异查看 : ${VAR1:="Linux"} # 不会将linux字符串当做命令执行只是将其赋值给遍历VAR1 ${VAR2

    82710

    《Linux命令行与shell脚本编程大全》 第六章环境变量

    bash shell,分两类: 全局变量:对于shell会话和所有生成的子shell都是可见的 局部变量:只对创建的它们的shell可见 6.1.1全局环境变量 查看全局变量,  $env    $...这种进程不会访问/etc/profile,只会检查HOME下的.bashrc .bashrc有两个作用:1.查看/etc目录下通用的bashrc文件、2.为用户提供一个定制自己命令别名和私有脚本函数的地方...bash shell提供BASH_ENV环境变量。当启动非交互式shell时,会检查BASH_ENV来查看要执行的启动文件。如果有,shell会执行里面的命令。这通常包含shell脚本变量设置。...我的电脑没有BASH_ENV值。是如何处理的呢?通过继承父shell的导出过的变量。 比如:父shell是登录shell。.../etc/profile  /etc/profile.d/*.sh  HOME/.bashrc  文件设置并导出了环境变量,用于执行脚本的子shell能继承这些变量。

    1K100

    shell脚本export变量只限脚本内么_shell脚本调用oracle存储过程

    子进程仅继承父进程的环境变量,子进程不会继承父进程的自定义变量 可使用如下命令将自定义变量转换为环境变量: export 变量名称 为什么父进程的环境变量数据可被子进程引用?...子 shell定义的变量只该子shell内有效。...export命令将使系统创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。 ​ source某脚本时,是在当前shell执行,并未创建子进程(子shell)。 ​...sh某脚本或./某脚本时,会创建子shell,子进程中进行脚本的执行。 ​ ./要求该用户对执行的脚本有执行权限,sh无要求。...| grep fdu_env_val [root@vm fdu]# 可以看到:sh执行脚本,当前shell无效,/bin/bash进入子shell模拟sh执行脚本,发现子shell生效,退出子shell

    1.4K60

    安恒信息提示漏洞:CVE-2014-6271 bash远程命令执行漏洞

    今日爆出CVE-2014-6271 bash远程命令执行漏洞。bash是Linux用户广泛使用的一款用于控制命令提示符工具,导致该漏洞影响范围甚广。...同时,当HTTP服务开放CGI服务或其他地方引用bash时可直接导致远程命令执行漏洞。主要影响系统为ubuntu centos debian suse readhat等主流linux操作系统。...漏洞危害主要表现在:影响基于bash开放的服务、程序。当网站利用CGI执行bash后可导致攻击者远程执行系统命令,从而可以利用系统命令反弹shell之后进行内网渗透、挂马、篡改主页、脱库等行为。...Again SHell)ENV指令 1....ENV指令还允许设置环境变量后进行指令执行,从某种程度上来说,ENV相当于一个指令执行的指令,同时还附带有临时设置环境变量的功能 ENV的指令执行走的是正常的BASH指令解析、执行流程,而在一个采取了安全配置的服务器上

    1.1K50

    【Linux】环境变量常见指令操作&基本实验(入门必看!)

    进程内部有效,不会被子进程继承下去 环境变量通过让所有的子进程继承的方式,实现自身的全局性!...,重新登录xshell它会自动恢复 (每一次重新登陆,都会给我们形成新的bash解释器并且新的bash解释器会从配置文件自动读取新城自己的环境变量表信息) 6.export(导出到环境变量表)(重点...) 具体实验四章节 export : 直接改变bash/shell环境变量本身 , 添加到当前进程上下文的环境变量表 ,重新登录xshell会恢复 注意事项:修改的只是 内存的环境变量 ,重新登录...环境变量本质:程序安装 指令也是程序,我们写的也是程序,为什么我们要带./ ?...(隐藏)配置文件名称.bash_profile 用vim进入配置文件.bash_profile vim ~/.bash_profile 注:把多个命令写到一个文件,这就是 shell脚本 ; 启动

    12310

    shell基础

    /bin/bash 表示以下内容使用bash解释器解析 注意: 如果直接将解释器路径写死脚本里,可能在某些系统就会存在找不到解释器的兼容性问题,所以可以使用:#!/bin/env 解释器 #!.../bin/env bash 2)脚本第二部分,注释(#号)说明,对脚本的基本信息进行描述【可选】 #!...如果某个内容需要多次使用,并且代码重复出现,那么可以用变量代表该内容。这样修改内容的时候,仅仅需要修改变量的值。...代码运作的过程,可能会把某些命令的执行结果保存起来,后续代码需要使用这些结果,就可以直接使用这个变量。 # 3.变量如何定义?...var2 var3 var4) array1=(`cat /etc/passwd`) 将文件每一行赋值给array1数组 array2=(`ls /root`) array3

    1.8K30

    如何管理你的 Linux 环境变量

    Linux 环境设置来自一系列的文件:一些是系统范围(意味着它们影响所有用户账户),一些是处于你的家目录的配置文件里。...# 如果有 ~/.bash_profile 或 ~/.bash_login 就不会读此文件 ~/.bash_profile ~/.bash_login 你可以修改本地存在的四个文件的任何一个,因为它们处于你的家目录.../lib/snapd/desktop SSH_TTY=/dev/pts/0 MAIL=/var/mail/shs TERM=xterm SHELL=/bin/bash SHLVL=1 LOGNAME=shs...你可以 Linux 命令行自定义你的颜色》处学习更多关于这些颜色的定义,和如何自定义它们。...默认情况下,用户定义的变量是本地的,并不被导出到新的进程,例如,子 shell 和脚本。export 命令使得环境变量可用在子进程中发挥功用。

    90340

    shell脚本语言(超全超详细)

    指定的解析器解析 bash xxx.sh:指明先用bash解析器解析 . xxx.sh 直接使用默认解析器解析(不会执行第一行的#!...指定的解析器)但是第一行还是要写的 注意:windows下 写脚本 linux下执行 注意 4、变量 案例: 案例:读取多个值 案例只读变量: 查看环境变量:env 导出环境变量 作用:(让其他...: 查看环境变量:env 导出环境变量 作用:(让其他shell脚本识别该变量,设为全局变量) source 脚本文件 source命令用法: source FileName 作用:在当前...这样如果把设置环境变量(或alias等等)的命令写进scripts,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。.../bin/bash expor DATA=250 用source 是文件生效 使用 env可以查看到环境变量已经有 DATA 可以终端直接读取: 在其他sh脚本读取:

    2.6K20
    领券