Как я могу запустить дополнительную консоль и запустить в ней некоторые команды?

Для меня не работает следующее:

#!/bin/bash commands () { cd ~/Yola pwd } export -f commands konsole --noclose -e "bash -c 'commands'"

Открывается новый консоль, но команды не выполняются.

1
задан 4 August 2017 в 11:18

2 ответа

Двойные кавычки вокруг строки, обрабатываемой как аргумент, означают, что строка запускается как дочерний процесс, т. е. содержимое не влияет на родительский процесс.

Одиночные кавычки ничего не делают с символами между ними, поэтому переключайте двойные кавычки для одинарных кавычек в вашей последней строке, например:

konsole --noclose -e 'bash -c commands'

(Ваша функция commands не нуждается в каких-либо кавычках.) Если вы используете длинный список команд таким образом, я рекомендую флаг -x, который печатает команды и выводит их в порядке. Используйте konsole --noclose -e 'bash -cx commands' для получения следующей распечатки:

+ commands + cd ~/Yola + pwd /home/Yola

1
ответ дан 18 July 2018 в 09:05

Двойные кавычки вокруг строки, обрабатываемой как аргумент, означают, что строка запускается как дочерний процесс, т. е. содержимое не влияет на родительский процесс.

Одиночные кавычки ничего не делают с символами между ними, поэтому переключайте двойные кавычки для одинарных кавычек в вашей последней строке, например:

konsole --noclose -e 'bash -c commands'

(Ваша функция commands не нуждается в каких-либо кавычках.) Если вы используете длинный список команд таким образом, я рекомендую флаг -x, который печатает команды и выводит их в порядке. Используйте konsole --noclose -e 'bash -cx commands' для получения следующей распечатки:

+ commands + cd ~/Yola + pwd /home/Yola

1
ответ дан 24 July 2018 в 19:14

Другие вопросы по тегам:

Похожие вопросы: