Linux 引用其他变量的环境变量
Linux environment variables referencing other variables
我正在使用来自网络供应商的引导脚本,我在 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
它运行没有任何错误,我该如何修复脚本?
您怀疑这些变量的定义不正确可能是对的。
/etc/environment
只能包含变量定义 - 它不像普通脚本那样执行(请参阅其文档 here,其中说 变量扩展在 /etc/environment 中不起作用。), 所以在 V2 的定义中 V1 没有发生变量扩展。因此 V2 没有正确定义。
尝试在系统范围 /etc/profile
(或等效的,取决于用户的 shell)或特定用户的 ~/.profile
s.
[ 中获取 /etc/environment
行。 =23=]作为最后的手段,您可以直接将 /etc/environment
的相应行复制到上述脚本中(但这会使维护变得更加困难)。
您还可以更正 /etc/environment
中的定义,使其不依赖扩展,即像这样:
export V2=/opt/nameofsupplier/sdk/CentOS-RHEL-7-x86_64/lib/cam
(假设没有太多需要更正)。但这也很难维护。
我正在使用来自网络供应商的引导脚本,我在 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
它运行没有任何错误,我该如何修复脚本?
您怀疑这些变量的定义不正确可能是对的。
/etc/environment
只能包含变量定义 - 它不像普通脚本那样执行(请参阅其文档 here,其中说 变量扩展在 /etc/environment 中不起作用。), 所以在 V2 的定义中 V1 没有发生变量扩展。因此 V2 没有正确定义。
尝试在系统范围 /etc/profile
(或等效的,取决于用户的 shell)或特定用户的 ~/.profile
s.
[ 中获取 /etc/environment
行。 =23=]作为最后的手段,您可以直接将 /etc/environment
的相应行复制到上述脚本中(但这会使维护变得更加困难)。
您还可以更正 /etc/environment
中的定义,使其不依赖扩展,即像这样:
export V2=/opt/nameofsupplier/sdk/CentOS-RHEL-7-x86_64/lib/cam
(假设没有太多需要更正)。但这也很难维护。