从键/值对文件设置环境变量

2023-12-24

TL;DR:如何将一组键/值对从文本文件导出到 shell 环境中?


作为记录,下面是问题的原始版本,并附有示例。

我正在 bash 中编写一个脚本,它解析某个文件夹中具有 3 个变量的文件,这是其中之一:

MINIENTREGA_FECHALIMITE="2011-03-31"
MINIENTREGA_FICHEROS="informe.txt programa.c"
MINIENTREGA_DESTINO="./destino/entrega-prac1"

该文件存储在./conf/prac1

我的剧本minientrega.sh然后使用以下代码解析文件:

cat ./conf/$1 | while read line; do
    export $line
done

但是当我执行时minientrega.sh prac1在命令行中它不设置环境变量

我也尝试过使用source ./conf/$1但同样的问题仍然存在

也许还有其他方法可以做到这一点,我只需要使用我传递的文件的环境变量作为脚本的参数。


这可能会有所帮助:

export $(cat .env | xargs) && rails c

我使用它的原因是如果我想测试.env我的 Rails 控制台中的东西。

gabrielf https://stackoverflow.com/users/293198/gabrielf想出了一个保持变量本地化的好方法。这解决了从一个项目到另一个项目时潜在的问题。

env $(cat .env | xargs) rails

我已经测试过这个bash 3.2.51(1)-release


Update:

忽略以以下开头的行#,使用这个(感谢皮特的评论 https://stackoverflow.com/questions/19331497/set-environment-variables-from-file#comment37343914_20909045):

export $(grep -v '^#' .env | xargs)

如果你想unset文件中定义的所有变量,请使用:

unset $(grep -v '^#' .env | sed -E 's/(.*)=.*/\1/' | xargs)

Update:

要同时处理带空格的值,请使用:

export $(grep -v '^#' .env | xargs -d '\n')

在 GNU 系统上——或者:

export $(grep -v '^#' .env | xargs -0)

在 BSD 系统上。


From 这个答案 https://superuser.com/a/649780/139303您可以使用以下命令自动检测操作系统:

export-env.sh

#!/bin/sh

## Usage:
##   . ./export-env.sh ; $COMMAND
##   . ./export-env.sh ; echo ${MINIENTREGA_FECHALIMITE}

unamestr=$(uname)
if [ "$unamestr" = 'Linux' ]; then

  export $(grep -v '^#' .env | xargs -d '\n')

elif [ "$unamestr" = 'FreeBSD' ] || [ "$unamestr" = 'Darwin' ]; then

  export $(grep -v '^#' .env | xargs -0)

fi

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从键/值对文件设置环境变量 的相关文章

  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • 将所有脚本参数复制到另一个变量

    我需要复制所有脚本参数并将它们传递给另一个脚本 我尝试这样做 args printargs sh args echo printargs sh args 但在这种情况下 如果我使用包含空格的参数调用我的父脚本 例如 script sh ar
  • 变量作为 bash 数组索引?

    bin bash set x array counter 0 array value 1 array 0 0 0 for number in array do array array counter array value array co
  • 子 shell 何时继承其父 shell 环境?

    什么情况下将shell的环境传递给子shell 子 shell 始终从父 shell 获取所有变量 man bash将描述所有使用子shell的情况 主要是 command command command and command 所谓环境只
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • 具有非阻塞读取功能的 Bash 脚本

    我想使用命名管道将一些数据发送到根进程 这是脚本 效果很好 bin sh pipe tmp ntp if p pipe then mknod m 666 pipe p fi while true do if read line lt pip
  • 如何在变量名中使用变量

    所以我正在使用这样的 json 变量 opponentInvData item1 它包含项目 1 到 6 我需要动态访问不同的项目并将它们设置为空 itemNum 是我需要访问的特定项目 我正在尝试使用 eval 函数 var itemNu
  • ANSI 转义码在行尾有奇怪的行为

    重现步骤 考虑以下 shell 命令 echo e e 41mTest nTest2 e 0mTest3 它打印Test并在下一行中Test2具有红色背景 使用 ANSI 转义码 Test2后面直接是Test3这是无色的 行为 第一次执行此
  • IFS 分隔一个字符串,如“Hello”,“World”,“this”,“is,一个无聊”,“line”

    我正在尝试解析 csv 文件 但 IFS 遇到一些问题 该文件包含如下行 Hello World this is a boring line 各列用逗号分隔 因此我尝试使用以下代码分解该行 IFS read r a tempArr lt l
  • 是否可以使用环境变量来为基于 log4net 的日志系统指定所需的日志级别?

    我们使用 log4net 进行日志记录 我想知道在指定日志级别时是否可以使用环境变量 动机很简单 我们的 QA 人员不必编辑配置文件 他们只需设置一次特定的环境变量 简而言之 我们不想将配置文件中的日志级别设置为某个恒定值 因为相同的构建由
  • Bash:循环遍历字符串数组后无法读出带空格的字符串

    我正在使用循环读取数组的内容 该数组包含名为 music 的目录层次结构中的所有目录和文件 内容是 find 命令先前输出的字符串 这个想法是根据流派 艺术家和标题将 directory contents 中每个数组元素的完整目录路径分成子
  • 找不到 NGINX brew 安装命令

    I do brew install nginx and get gt Downloading http nginx org download nginx 1 2 2 tar gz Already downloaded Library Cac
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • 检查多个变量java中的替换空值

    我试图找到一种简单的方法来在 Java 中的多个变量中执行多个 null 检查 替换 我有一个包含大约 20 个字符串变量的对象 在构造函数中 我想检查是否有任何变量值为空 如果它们为空 我想用空字符串替换它们 我可以执行一系列 if 语句
  • CentOS目录结构是树形的吗?

    CentOS 上有相当于树的东西吗 如果你的 Centos 系统上没有安装 tree 无论如何我通常建议服务器设置使用最小安装磁盘 你应该在命令行中输入以下内容 yum install tree y 如果没有安装 那是因为您没有正确的存储库
  • 液体字符串中的转义字符

    我正在尝试将包含各种尺寸的标签列表放在一起 在 Shopify 中使用 Liquid 尺寸使用单引号和双引号表示英寸和英尺 因为它同时使用两者 所以会导致字符串正确关闭的问题 我尝试过使用标准转义字符 但这似乎不起作用 是否可以在 Liqu
  • 如何将长选项与 Bash getopts 内置一起使用?

    我正在尝试解析 tempBash getopts 的选项 我这样调用我的脚本 myscript temp foo bar someFile 这是我用来解析选项的代码 while getopts temp shots o option do
  • Python3 http.server:将日志保存到文件中

    我使用Python3 6编写了一个简单的HTTP服务器来重定向所有请求 我写的文件可以找到here https github com kmahyyg learn py3 blob master antiscanhttp py 我可以在 Ub
  • 如何剪切(1) 个驼峰字?

    Bash 中有没有一种简单的方法可以将驼峰式单词拆分为其组成词 例如 我想将 aCertainCamelCasedWord 拆分为 a certain Camel Cased Word 并能够选择我感兴趣的那些字段 当单词分隔符是下划线时
  • 如何将命令作为参数传递给 ssh [重复]

    这个问题在这里已经有答案了 我的需要是让这个命令起作用 sshpass p XXXX ssh oStrictHostKeyChecking no email protected cdn cgi l email protection sudo

随机推荐

  • 添加 spring-data-jpa 架构引用后 Spring 配置 xml 无效

    启动 spring 上下文时出现以下异常 java lang Exception java lang IllegalStateException ContainerBase addChild start org apache catalin
  • 错误:(参数类型“String?”无法分配给参数类型“String”,因为“String?”可以为空,而“String”则不能。)在Flutter中

    我是 flutter 的新手 在传递字符串时遇到错误 并到处查找 最后将其添加到 StackOverflow 中 错误是 Error The argument type String can t be assigned to the par
  • Node js函数返回[object Object]而不是字符串值

    我对 java 脚本和 Node js 很陌生 我试图从 MySQL DB 获取一个值 返回值是 object Object 而不是字符串 我在网上没有找到任何答案 这是什么问题 我希望这里有人能提供帮助 行值为 object Object
  • MKAnnotationView 的子类

    我想知道是否有人知道 MKAnnotationView 类的任何子类 在苹果文档中 他们说一个例子是 MKPinAnnotationView 所以我想知道是否还有其他预先创建的子类 例如用于跟踪设备当前位置的子类 如果有人有关于创建我自己的
  • 如何反序列化 C# 对象中的嵌套 xml

    我正在使用 silverlight 来实现 xml 的反序列化 如下所示 字符串 xmlString
  • 在 Activity 开始之前访问 Activity

    我正在使用 Instrumentation TestCase 类来对活动中的某些内容进行单元测试 在启动此活动之前 我需要能够检查 SharedPreferences 的内容并编辑它们 我无法使用 setUp 方法创建 Activity 并
  • 如何在 Lucene 中存储多种不同类型的文档

    我有一个现有的 Lucene 存储 其中包含数百万个文档 每个文档都代表一个实体的元数据 我有几个 Id 字段 Id1 Id2 Id5 每个文档可以有零个或多个该字段的值 一次只能由这些 Id 之一查询该索引 我已经独立地对这些字段建立了索
  • UIButton 渐变不起作用

    我从教程中找到了这段代码并尝试使用它 CAGradientLayer btnGradient CAGradientLayer layer btnGradient frame button bounds btnGradient colors
  • 将 Func 作为属性参数传递以保护 MVC 路由

    我正在尝试保护满足一组条件的一组用户的 MVC 路由 由于 MVC 似乎大量使用属性 而 Steven Sanderson 在他的专业 MVC 书中使用了一个属性来实现安全可扩展性 因此我开始沿着这条路线走下去 但我想根据我所应用的操作来根
  • PHP 的 mcrypt_decrypt() 需要什么?

    我有一个使用 mcrypt decrypt 函数的脚本 但出现以下错误 致命错误 调用未定义的函数 mcrypt decrypt 我需要包含哪些模块 库才能使用此功能 或者还有其他原因导致我收到错误吗 Thanks sudo apt get
  • 工具提示使用标题属性而不使用js?

    我正在寻找另一个制作工具提示的解决方案很长时间title 属性上 hover选择 我希望找到一种使用方法title 属性并更改我的content 动态属性 webkit font smoothing antialiased font fam
  • 纯 bash 中的字符串规范化

    字符 E xcc x81 和 xc3 x89 有不同的代码点 它们看起来相同 但在测试匹配时结果是否定的 不过 Python 可以对它们进行标准化 unicodedata normalize NFC E decode utf 8 unico
  • 保存在 Models.py 之前对 ManyToManyField 进行验证

    我有以下型号 class Application models Model users models ManyToManyField User through Permission folder models ForeignKey Fold
  • ActiveAdmin - 使用带有过滤器的范围

    在我的 ActiveAdmin 模型中 我有一个自定义范围来显示已删除的记录和几个用于按特定列搜索记录的过滤器 单独使用过滤器或组合在一起使用过滤器可以按预期工作 使用范围可以按预期工作 问题在于 使用范围似乎会覆盖所有过滤器 并且在选择范
  • 在Java中交替播放2个不同的频率

    我是 Java 声音的新手 我想在指定的时间内循环播放 2 个不同的频率 每个频率 1 秒 例如 如果我有 2 个频率 440hz 和 16000hz 时间周期为 10 秒 那么每个 偶数 秒播放 440hz 每个 奇数 秒播放 16000
  • MVC 5 Visual Studio 2013 中的“创建强类型视图”菜单选项在哪里

    我开始创建 MVC 5 应用程序 但在控制器中 右键单击 创建操作方法 选择 创建视图 出现菜单 我可以在其中选择模型等 但不再有选择 创建强类型视图 的选项 请参阅下面的屏幕截图 您好 MVC3 或 Visual Studio 2015
  • VB.NET 将双精度值转换为字符串 = 精度损失

    你好 我在 VB NET 中有一个像这样的双值 Dim value 9 729000000000001 当转换为字符串时 我得到这个 value tostring 9 729 我尝试添加格式 value tostring 0 0000000
  • 等待后任务继续不起作用

    我遇到了一个非常奇怪的情况 任务执行之后没有继续执行await在IIS中 不确定是否与IIS有关 我使用 Azure 存储和以下控制器重现了此问题 完整解决方案在github上 https github com almazik AsyncE
  • 如何从 ReactiveSecurityContextHolder 获取原始令牌?

    我有一个方法 GetMapping foo public void gt foo JwtAuthenticationToken token throws ExecutionException InterruptedException Obj
  • 从键/值对文件设置环境变量

    TL DR 如何将一组键 值对从文本文件导出到 shell 环境中 作为记录 下面是问题的原始版本 并附有示例 我正在 bash 中编写一个脚本 它解析某个文件夹中具有 3 个变量的文件 这是其中之一 MINIENTREGA FECHALI