Estou tentando abrir programaticamente um novo terminal e executar automaticamente um script personalizado que define várias variáveis de ambiente para prepará-lo para uma sessão interativa. Tudo isso funciona bem, exceto que o terminal resultante não pode ser editado, ou seja, não há cursor. Minha tentativa atual é assim:
konsole -hold -e /path/to/bash/script/run_oenv.sh
onde run_oenv.sh
fica assim (para testes simples):
echo hello world
export FOO=bar
Ao executar o comando acima run_oenv.sh
é executado com sucesso e vejo a instrução de depuração esperada ecoada no novo terminal, mas simplesmente não consigo descobrir como tornar o novo terminal interativo. o que estou perdendo?
Em última análise, o script bash terá que fazer mais do que apenas definir variáveis de ambiente, mas este é o caso de teste mais simples.
Isso está no Centos 7/KDE.
Responder1
Ao usar -e
um emulador de terminal para executar um comando, ele executa esse comandoem vez dedo shell que ele teria iniciado. Isso significa que ele executa seu script e nada mais.
Se você deseja iniciar um bash
shell interativo que origine seu arquivo, use bash
com sua --rcfile
opção de linha de comando:
konsole -hold -e bash --rcfile /path/to/bash/script/run_oenv.sh
Observe que isso fazbash
nãoleia o ~/.bashrc
arquivo. Se você ainda quiser source ~/.bashrc
, como normalmente aconteceria em sessões de shell interativas, você faria isso a partir do seu run_oenv.sh
código:
[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"
ou sem a sintaxe de curto-circuito,
if [ -f "$HOME/.bashrc" ]; then
source "$HOME/.bashrc"
fi
(provavelmente na parte superior do run_oenv.sh
arquivo para que seu arquivo substitua quaisquer variáveis ou configurações em ~/.bashrc
)