【问题标题】:Cannot set environment variable before command无法在命令之前设置环境变量
【发布时间】:2014-12-15 10:10:23
【问题描述】:

我正在尝试在 bash 中调用命令之前设置一个变量(在 Mac 上):

BRANCH=test echo "$BRANCH"

但我得到一个空的回声。

printenv 也没有其他同名变量:

$ printenv | grep BRANCH
$

我做错了什么?

【问题讨论】:

    标签: bash environment-variables


    【解决方案1】:

    这是正确的方法:

    BRANCH='test' bash -c 'echo "$BRANCH"'
    test
    

    要执行echo 命令,您需要bash -c 在分配后执行它。

    【讨论】:

    • BRANCH='test' bash -c 'echo "$BRANCH"'BRANCH='test' echo "$BRANCH"有什么区别?
    • 你也可以使用:( BRANCH='test' && echo "$BRANCH" ) 我猜在第一种情况下分配不会被处理,除非bash -c 派生一个新的子进程。
    • 我猜this answer 解释得很好。
    • 需要注意两点:首先,$BRANCH 被扩展 echo 开始之前,echo 可以查看其环境。其次,echo 无论如何都会忽略它的环境。这里没有必要也没有能力使用环境变量,所以只需使用echo test
    猜你喜欢
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多