一尘不染

无法通过脚本文件导出变量

linux

我正在尝试通过myDeploy.sh导出变量,但未设置导出。当我回声时,它不是在回声。但是,当我在命令上显式设置变量时,它也会正确设置并回显。以下是我的代码段。

myDeploy.sh

 #!/bin/bash

# export the build root

export BUILD_ROOT=/tibco/data/GRISSOM2

export CUSTOM1=/tibco/data/GRISSOM2/DEPLOYMENT_ARTIFACTS/common/MDR_ITEM_E1/rulebase

export CLEANUP=$BUILD_ROOT/DEPLOYMENT_ARTIFACTS/common

cd $BUILD_ROOT/DEPLOYMENT_ARTIFACTS/common

当我回声时echo $BUILD_ROOT,并不是在为我回声。但是当我在命令提示符下明确执行它时

[root@krog3-rhel5-64 GRISSOM2]# export BUILD_ROOT=/tibco/data/GRISSOM2

它设置正确并且也回显。我想念什么?


阅读 249

收藏
2020-06-02

共1个答案

一尘不染

像这样运行脚本

. ./script

要么

source script

会在当前shell上下文中执行脚本(不创建子shell),并且脚本中设置的环境变量将在 当前 shell中可用。

从手册中:

文件名 [ 参数 ]

从当前Shell上下文中的 filename 参数读取和执行命令。如果 filename
不包含斜杠,则该PATH变量用于查找文件名。当Bash不在POSIX模式下时,如果在中找不到文件名,则搜索当前目录$PATH。如果提供了任何参数,则在执行
文件名 时它们将成为位置参数 。否则,位置参数将保持不变。返回状态是最后执行的命令的退出状态;如果未执行任何命令,则返回零。如果找不到 文件名
或无法读取 文件名 ,则返回状态为非零。此内建等效于source

2020-06-02