以下对我不起作用:
#!/bin/bash
commands () {
cd ~/Yola
pwd
}
export -f commands
konsole --noclose -e "bash -c 'commands'"
新的控制台打开了,但是命令未执行。
答案1
作为参数解析的字符串周围的双引号意味着该字符串作为子进程运行,即其内容不会影响父进程。
单引号不会对它们之间的字符产生任何影响,因此在最后一行将双引号替换为单引号,如下所示:
konsole --noclose -e 'bash -c commands'
(您的commands
函数不需要任何引号。)如果您以这种方式运行一长串命令,我建议使用-x
按顺序打印出命令和输出的标志。使用konsole --noclose -e 'bash -cx commands'
可获得以下打印输出:
+ commands + cd ~/Yola + pwd /home/Yola