"konsole -e" resulta em terminal somente leitura

"konsole -e" resulta em terminal somente leitura

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.shfica 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 -eum 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 bashshell interativo que origine seu arquivo, use bashcom sua --rcfileopção de linha de comando:

konsole -hold -e bash --rcfile /path/to/bash/script/run_oenv.sh

Observe que isso fazbash nãoleia o ~/.bashrcarquivo. Se você ainda quiser source ~/.bashrc, como normalmente aconteceria em sessões de shell interativas, você faria isso a partir do seu run_oenv.shcó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.sharquivo para que seu arquivo substitua quaisquer variáveis ​​ou configurações em ~/.bashrc)

informação relacionada