我正在使用来自网络供应商的启动脚本,我在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
它没有任何错误,我该如何修复脚本?
答案 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
(假设没有太多的东西需要纠正)。但这也很难维持。