Linux环境变量引用其他变量

时间:2016-06-21 09:34:28

标签: linux environment-variables boot

我正在使用来自网络供应商的启动脚本,我在RedHat 7.2上使用它。启动脚本使用多个变量设置环境,但我不认为这些变量设置正确。

我已将启动脚本添加到/ etc / environment中,我可以看到变量已定义并可供所有用户使用。

这是如何在脚本中定义变量的示例:

    export V1=/opt/nameofsupplier/sdk/CentOS-RHEL-7-x86_64
    export V2=${V1}/lib/cam

还有更多,如果我从终端尝试这个:

    cd $V1

它工作正常,但如果我尝试:

    cd $V2

我明白了:

    base: cd $V1/lib/cam: No such file or directory

路径有效,如果我在shell中执行此操作:

    export V2=${V1}/lib/cam
    cd $V2

它没有任何错误,我该如何修复脚本?

1 个答案:

答案 0 :(得分:1)

你可能正确怀疑这些变量的定义不明确。 /etc/environment只能包含变量定义 - 它不像普通脚本那样执行(请参阅其文档here,其中说明变量扩展在/ etc / environment中不起作用。)因此,V2的定义中不会发生V1的可变扩展。因此V2未正确定义。

尝试在系统范围内/etc/environment(或其等效内容,具体取决于用户的外壳)或特定用户来源/etc/profile行。 ~/.profile s。

作为最后的手段,您可以将/etc/environment的相应行复制到上述脚本中(但这会使维护更加困难)。<登记/>
您还可以更正/etc/environment中的定义,而不是依赖于扩展,例如:

export V2=/opt/nameofsupplier/sdk/CentOS-RHEL-7-x86_64/lib/cam

(假设没有太多的东西需要纠正)。但这也很难维持。