Como iniciar um novo shell, passar novas variáveis de ambiente e trabalhar lá até sair?

1

Eu preciso de um ambiente de shell especial configurado para interagir com um aplicativo comercial que compramos. O ambiente é consultado "on the fly" do aplicativo.

Então, tentei iniciar o shell com um script que possui comandos passados para ele.

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

Isso funciona ... Eu obtenho o ambiente especial, a fonte e, em seguida, fonte meu próprio ambiente ... mas então o shell sai.

Como faço para que ele fique dentro do segundo bash shell até eu sair?

    
por dacracot 08.07.2016 / 17:13

2 respostas

3

Você pode usar --rcfile para especificar uma alternativa para .bashrc na inicialização. Isso pode ser útil em sua configuração:

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

Se você também quiser carregar .bashrc , isso poderá ser adicionado após o comando cat . Você pode então fazer isso em uma função

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

Que tal isso? Ele inicia um novo bash, com as novas variáveis de ambiente definidas.

/bin/bash -c '/opt/xyq/commercialApp/bin/tool getEnv > ~/setAppEnv; . ~/setAppEnv; . ~/setMyEnv; bash'
    
por 08.07.2016 / 17:27