前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >我可以在不source脚本的情况下将变量从Bash脚本导出到环境中吗

我可以在不source脚本的情况下将变量从Bash脚本导出到环境中吗

作者头像
程序熵
发布于 2023-09-25 03:05:47
发布于 2023-09-25 03:05:47
85200
代码可运行
举报
文章被收录于专栏:技术汇技术汇
运行总次数:0
代码可运行

问:

假设我有这个脚本:

export.bash

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#! /usr/bin/env bash
export VAR="HELLO, VAR"

当我执行脚本并尝试访问 $VAR 时,我没有得到任何值!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo $VAR

有没有一种方法可以通过只执行 export.bash 而不 source 它获取 $VAR?

答:

不可以。

但是有几种可能的解决办法。

最明显的方法,你已经提到过,是使用 source 或 . 在调用 shell 的上下文中执行脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cat set-vars1.sh 
export FOO=BAR
$ . set-vars1.sh 
$ echo $FOO
BAR

另一种方法是在脚本中打印设置环境变量的命令,而不是设置环境变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ cat set-vars2.sh
#!/bin/bash
echo export FOO=BAR
$ eval "$(./set-vars2.sh)"
$ echo "$FOO"
BAR

在终端上执行 help export 可以查看 Bash 内置命令 export 的帮助文档:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# help export
export: export [-fn] [name[=value] ...] or export -p
    Set export attribute for shell variables.

    Marks each NAME for automatic export to the environment of subsequently
    executed commands.  If VALUE is supplied, assign VALUE before exporting.

    Options:
      -f  refer to shell functions
      -n  remove the export property from each NAME
      -p  display a list of all exported variables and functions

    An argument of `--' disables further option processing.

    Exit Status:
    Returns success unless an invalid option is given or NAME is invalid.
  • -f 指 shell 函数
  • -n 从每个(变量)名称中删除 export 属性
  • -p 显示所有导出变量和函数的列表

参考:

  • stackoverflow question 16618071
  • help eval

相关阅读:


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-24 06:06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序熵 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Google Shell 风格规范
可执行文件必须以 #!/bin/bash 开头和最少数量的标志。 使用 set 设置 shell 选项,以便将脚本调用为 bash 脚本名称不会破坏其功能。
acc8226
2022/05/17
1.3K0
shell_环境变量_常量_位置变量_运算(3)
文章目录 保存永久环境变量 常量 位置变量 ln -s 源文件 连接文件 ls |wc -l pidof shift $? pstree -p f1.sh bash中的算术运算 bash随机数生成器
以某
2023/03/07
6860
Shell脚本攻略02-玩转变量与环境变量
有一些特殊的变量会被shell环境和操作系统环境用来存储一些特别的值,这类变量就被称为环境变量。
小小工匠
2021/08/16
9740
Linux中高效编写Bash脚本的10个技巧
Linux开源社区(微信号:cn_linux) 英文:Aaron Kili,翻译:Linux中国/ch-cn 链接:linux.cn/article-8618-1.html Shell 脚本编程 是你在 Linux 下学习或练习编程的最简单的方式。尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能。 本文中,我们将分享 10 个写出高效可靠的 bash 脚本的实用技巧,它们包括: 1、 脚本中多写注释 这是不仅可应用于 shell 脚本程序中,也可用在
顶级程序员
2018/05/03
1.7K0
Linux中高效编写Bash脚本的10个技巧
shell变量详解
在编程中,我们总有一些数据需要临时存放在内存,以待后续使用时快速读出。先了解一下计算机的存储单位吧。
星哥玩云
2022/09/15
6020
shell变量详解
Shell 脚本避坑指南(一)
提到 Shell 大家想必不会太陌生,我们通常认为 Shell 是我们和系统交互的接口,执行命令返回输出,比如 bash 、zsh 等。偶尔也会有人把 Shell 和 Terminal(终端)混淆,但这和本文关系不大,暂且略过。
Jintao Zhang
2021/11/24
6800
【linux命令讲解大全】065.深入了解export命令:设置导出属性与环境变量管理
在 info bash 或 bash 在线文档 的 3.7.3 节提到了 shell 执行环境,其中涉及变量和函数的内容如下:
全栈若城
2024/03/02
2490
Bash 编程易错总结大全
Bash Pitfalls[1] 文章介绍了 40 多条日常 Bash 编程中,老手和新手都容易忽略的错误编程习惯。每条作者在给出错误的范例上,详细分析与解释错误的原因,同时给出正确的改写建议。文中有不少引用的文章,也值得大家仔细阅读。仔细阅读了这篇文章后,收获很多,不感独享,把这篇文章以半翻译半笔记的形式分享给大家。
码农架构
2022/11/17
2.9K0
Bash 编程易错总结大全
Bash脚本编程(原创)
Bash,Unix shell的一種,在1987年由布萊恩·福克斯為了GNU計劃而编写。1989年釋出第一個正式版本,原先是計劃用在GNU作業系統上,但能运行于大多数类Unix系统的操作系统之上,包括Linux與Mac OS X v10.4都將它作為預設shell。它也被移植到Microsoft Windows上的Cygwin與MinGW,或是可以在MS-DOS上使用的DJGPP專案。在Novell NetWare與Andriod在上也有移植。1990年後,Chet Ramey成为了主要的维护者。為Bourne shell的後繼相容版本與開放原始碼版本,它的名稱來自Bourne shell(sh)的一个双关语(Bourne again / born again):Bourne-Again SHell。
用户2645267
2018/08/04
1.4K0
bash 的变量和参数
本文介绍了bash脚本中的变量和参数,包括环境变量、本地变量、位置变量和特殊变量。还介绍了如何通过命令替换和字符串操作来处理变量和参数。
IMWeb前端团队
2017/12/28
1.5K0
10分钟搞定让你困惑的 Jenkins 环境变量
Jenkins, DevOps 技术栈的核心之一,CI/CD 离不开编写 Pipeline 脚本,上手 Jenkins ,简单查一下文档,你就应该不会被 agent,stages,step 这类关键词弄懵,也能很快构建出 pipeline 的骨架
用户4172423
2021/01/13
1.3K0
10分钟搞定让你困惑的 Jenkins 环境变量
详解shell脚本的环境、普通、特殊变量
#变量介绍 变量就是用一个固定的字代替复杂的内容,该内容里可能还会包含变量、路径、字符串等其它的内容。
老油条IT记
2020/09/04
1.8K0
详解shell脚本的环境、普通、特殊变量
【SRE该掌握的利器】提升Shell脚本质量的利器:ShellCheck
ShellCheck是一个开源的静态分析工具,专门用于分析Shell脚本。它能够自动检测出脚本中的多种问题,包括但不限于语法错误、逻辑漏洞、代码风格问题,以及可能的安全风险。ShellCheck不仅能够识别问题,还能提供改进建议,帮助SRE快速定位并修复这些问题。
五分钟学SRE
2024/04/26
4710
Bash shell中bash、sh、source及“.”的区别与联系
以上列出了当前系统所支持的shell类型。查看shell的历史我们可以知道,我们通常所说的bash shell(bash)全称为GNU Bourne-Again SHell。在目前的发行版中,sh已经成为bash的一个软连接。在man sh的时候大家都会发现,其实man出来的手册时bash的内容。
耕耘实录
2022/05/06
1.2K0
Bash shell中bash、sh、source及“.”的区别与联系
nodejs写bash脚本终极方案!
最近在学习bash脚本语法,但是如果对bash语法不是熟手的话,感觉非常容易出错,比如说:显示未定义的变量shell中变量没有定义,仍然是可以使用的,但是它的结果可能不是你所预期的。举个例子:
IT大咖说
2021/07/19
4K0
linux bash环境变量简单总结
一.环境变量简介 Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都 是相同的,这个默认环境实际上就是一组环境变量的定义。 环境变量是全局的,设置好的环境变量可以被所有当前用户所运行的程序所使用。 用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。 常见的环境变量: PATH: 决定了shell将到哪些目录中寻找命令或程序 ROOTPATH: 这个变量的功能和PATH相同,但
小小科
2018/05/03
2K0
Jenkins流水线环境变量权威指南
欢迎来到“Jenkins CookBook”系列的第一篇博客文章。今天,我们专注于有效地使用Jenkins Pipeline环境变量。您将学习如何定义env变量,如何更新它们,以及如何在布尔表达式中正确使用它们。
DevOps云学堂
2019/11/12
9.5K0
我是如何利用环境变量注入执行任意命令
这周三在『代码审计知识星球』中发了一段代码,用户可以控制环境变量,但后面没有太多可控的地方,最后找到了一处执行命令,不过命令用户也不可控。用PHP来演示一下就是下面这7行:
phith0n
2023/11/02
7760
我是如何利用环境变量注入执行任意命令
Shell内置命令大全,Linux运维工程师收藏!
Shell是一种命令行解释器,它允许用户与操作系统进行交互。在Shell中,有许多内置命令可用于执行各种任务,包括文件操作、进程管理、环境变量设置等。在本文中,我们将详细介绍一些常见的Shell内置命令及其示例用法。
网络技术联盟站
2023/07/14
1.1K0
Shell内置命令大全,Linux运维工程师收藏!
shellcheck 帮助你写出更好的脚本
首先,可以帮助你提前发现并修复简单的语法错误,节约时间。每次都需要运行才发现写错了一个小地方,确实非常浪费时间。 其次,可以针对你当前不够完善不够健壮的写法,提供建议,帮助你提前绕开一些坑,避免等问题真的发生了才去调试处理。
zqb_all
2019/12/27
1.6K0
相关推荐
Google Shell 风格规范
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验