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