Следующее не работает на меня:
#!/bin/bash
commands () {
cd ~/Yola
pwd
}
export -f commands
konsole --noclose -e "bash -c 'commands'"
Новая консоль открывается, но команды не выполняются.
Двойные кавычки вокруг строки, проанализированной как аргумент, означают, что строка выполняется как дочерний процесс, т.е. это - содержание, не влияют на родительский процесс.
Одинарные кавычки ничего не делают к символам между ними, так переключите двойные кавычки для одинарных кавычек на Вашей последней строке, как так:
konsole --noclose -e 'bash -c commands'
(Ваш commands
для функции не нужны никакие кавычки вокруг этого.), Если Вы выполняете длинный список команд таким образом, я рекомендую -x
флаг, который распечатывает команды и вывод в порядке. Использовать konsole --noclose -e 'bash -cx commands'
выводить следующую печать:
+ commands + cd ~/Yola + pwd /home/Yola