【发布时间】:2014-06-26 06:50:09
【问题描述】:
我想自动执行一项我经常执行的重复任务。那就是为不同的架构创建 rpm。要编译代码并创建 rpm,我需要设置项目环境。设置环境后,我将为当前架构创建 rpm,我应该再次通过设置环境为其他架构构建 rpm。
我正在尝试自动化这个过程。问题是一旦设置了环境,我将成为新的 shell,所以我的脚本在子 shell 中不可见。如何自动化?
这是我尝试过的。
cd $project_dir
setenv.sh x86 #creates new sub shell
make clean
make rpm
cp *rpm ~/
exit #exit from the sub shell
setenv.sh x86_64 #creates new shell
make clean
make rpm
cp *.rpm ~/
exit
将 env 设置为 x86 后,下一个命令不会被执行。
【问题讨论】:
-
setenv.sh到底是做什么的?脚本的下一行,make clean,在setenv.sh返回之前不会运行,并且不会在任何子shell 中运行;它将运行与setenv.sh相同的shell。 -
setenv.sh 将在新的 shell 中设置编译环境。
-
这是什么意思?你只是设置一些环境变量吗?如果是这样,这些更改只会持续到
setenv.sh退出,即之前make clean运行。
标签: bash shell automation sh subshell