我正在尝试创建一个脚本来启动另一个脚本并直接将其作为一个孩子。我的目标是:
- 子程序应该看到不同的 $HOME
- 子脚本应该在与当前工作目录不同的目录中运行(即不同的密码)
- 没有额外的贝壳
我通过 subshells 和 exec 实现了前两个目标,但我还没有管理第三个目标。有人可以帮助我吗?
这是详细信息。为了便于描述,我将调用第一个脚本run
和另一个程序sleepcmd
。这是 sleepcmd 脚本的内容
echo $HOME && exec sleep 1000
这是运行脚本的内容
(HOME=~/foo/bar && cd $HOME/bin && ./sleepcmd)
在 ./sleepcmd 调用之前添加一个 exec,即
(HOME=~/foo/bar && cd $HOME/bin && exec ./sleepcmd)
与直接运行 sleepcmd(或 sleep)相比,它只需要一个额外的 shell。
我怎样才能做得更好,摆脱 () 子shell,同时仍然sleep 1000
使用不同的 $HOME 和工作目录调用?