如何启动一个新的 shell,向其传递新的环境变量,并在那里工作直到退出?

如何启动一个新的 shell,向其传递新的环境变量,并在那里工作直到退出?

我需要设置一个特殊的 shell 环境来与我们购买的商业应用程序交互。该环境可从应用程序“即时”查询。

因此,我尝试使用传递给它的命令的脚本来启动 shell。

/bin/bash -c '/opt/xyq/commercialApp/bin/tool getEnv > ~/setAppEnv; . ~/setAppEnv; . ~/setMyEnv;'

这有效...我获得特殊环境,获取它,然后获取我自己的环境...但随后 shell 退出。

如何让它留在第二个 bash shell 中直到我退出?

答案1

您可以用来指定启动时--rcfile的替代方案。.bashrc这可能在您的设置中可用:

/opt/xyq/commercialApp/bin/tool/getEnv > ~/setAppEnv
cat ~/setMyEnv >> ~/setAppEnv
bash --rcfile ~/setAppEnv

如果你也想加载,.bashrc那么可以在命令后面添加它cat。然后你可以将其变成一个函数

runApp()
{
  /opt/xyq/commercialApp/bin/tool/getEnv > ~/setAppEnv
  cat ~/setMyEnv >> ~/setAppEnv
  echo '[[ -e ~/.bashrc ]] && . ~/.bashrc' >> ~/setAppEnv
  bash --rcfile ~/setAppEnv
}

答案2

这个怎么样?它会启动一个新的 bash,并设置新的环境变量。

/bin/bash -c '/opt/xyq/commercialApp/bin/tool getEnv > ~/setAppEnv; . ~/setAppEnv; . ~/setMyEnv; bash'

相关内容