我正在尝试通过myDeploy.sh导出变量,但导出未设置。当我回应它时,它不会回响。但是,当我在命令中明确设置变量时,它会正确设置并回响.Below是我代码的片段。
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
它设置正确并且也回响。我错过了什么?
答案 0 :(得分:5)
像
一样运行你的脚本 . ./script
或
source script
将在当前shell上下文中执行您的脚本(不创建子shell),并且在当前 shell中可以使用脚本中设置的环境变量。
从手册:
。 filename [参数]
从当前的 filename 参数中读取并执行命令 shell语境。如果 filename 不包含斜杠,则为
PATH
变量 用于查找文件名。当Bash不在POSIX
模式时,当前 如果在$PATH
中找不到文件名,则搜索目录。如果有的话 提供参数,它们成为时的位置参数 filename 已执行。否则位置参数是 不变。返回状态是最后一个命令的退出状态 执行,如果没有执行命令则为零。如果 filename 不是 发现或无法读取,返回状态为非零。这内置 相当于source
。