如何打开xterm -e'command',保留已经声明的函数?

时间:2019-05-01 19:16:12

标签: linux bash function xterm

我想运行以下命令:

$ testfunction (){ echo 123;}
$ xterm -hold -e "testfunction"
  

返回:找不到testfunction命令(在新的xterm窗口中)。

但是当我在主终端中调用该函数时,它返回123

$ testfunction
123

尝试

declare -F | grep testfunction中,我看到该函数已声明。

试图只声明一个变量:

$ variable='123'
$ xterm -hold -e "echo $variable"
  

返回:123(在新的xterm中)。

为什么新的optermed xterm找不到声明的函数,但是找到了声明的变量?

1 个答案:

答案 0 :(得分:2)

您需要导出函数/变量以允许子进程访问它们。

defaultProxy

result

而且,testfunction() { echo 123; } export -f testfunction xterm -hold -e "testfunction" 实际上并不起作用,看起来就像这样。 xterm -hold -e "echo $variable"用双引号引起来,因此在调用$variable之前进行了扩展,即,其值传递给了xtermxterm无效,因为xterm -hold -e 'echo $variable'没有导出