"konsole -e" выводит терминал только для чтения

"konsole -e" выводит терминал только для чтения

Я пытаюсь программно открыть новый терминал и автоматически запустить пользовательский скрипт, который устанавливает различные переменные среды, чтобы подготовить его к интерактивному сеансу. Все это работает отлично, за исключением того, что полученный терминал нельзя редактировать, т. е. нет курсора. Моя текущая попытка выглядит так:

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

где run_oenv.shэто выглядит так (для простого тестирования):

echo hello world
export FOO=bar

При запуске указанная выше команда run_oenv.shвыполняется успешно, и я вижу ожидаемый оператор отладки, отраженный в новом терминале, но я просто не могу понять, как сделать новый терминал интерактивным. Что я упускаю?

В конечном итоге скрипт bash должен будет сделать больше, чем просто задать переменные среды, но это самый простой тестовый случай.

Это на Centos 7/KDE.

решение1

При использовании -eэмулятора терминала для выполнения команды он выполняет эту командувместооболочки, которую он бы запустил. Это означает, что он запускает ваш скрипт и больше ничего.

Если вы хотите запустить интерактивную bashоболочку, которая будет использовать ваш файл, используйте bashее --rcfileпараметр командной строки:

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

Обратите внимание, что это делаетbash нетпрочитайте ~/.bashrcфайл. Если вы все еще хотите source ~/.bashrc, как это обычно происходит в сеансах интерактивной оболочки, вы можете сделать это из своего run_oenv.shкода:

[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"

или без синтаксиса сокращенного кода,

if [ -f "$HOME/.bashrc" ]; then
    source "$HOME/.bashrc"
fi

(вероятно, в верхней части файла, run_oenv.shчтобы ваш файл переопределил любые переменные или настройки в ~/.bashrc)

Связанный контент