我需要设置一个特殊的 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'