在多个终端中调用多个函数

在多个终端中调用多个函数

我正在定义一个函数,.bashrc用于调用多个其他函数。

function startday {
    irene 
}

这是可行的,(irene是一个定义并获取来源的函数)然而,我想在另一个终端执行它。

function startday {
    gnome-terminal -c "irene"
}

Failed to execute child process "irene" (No such file or directory)

irene激活虚拟环境,因此我希望终端在运行命令后不会退出。(不用说,只需irene在终端上执行即可成功执行该功能。)

答案1

在我的 gnome 终端版本上

$ gnome-terminal --version
GNOME Terminal 3.22.0

我没有选择-c,但我有选择-x-e

但是如果你想开始gnome-terminal运行内部函数来源在 .bashrc 中你可以尝试这样做:

gnome-terminal -x "bash" -ic "irene"

请注意bash 的-i选项将确保您的选项.bashrc被评估,因此irene功能可用。

另请注意irene,函数完成操作后将gnome-terminal停止。您可以考虑运行一些命令 irene,例如:

gnome-terminal -x "bash" -ic "irene; sleep 2;" # wait 2 seconds after "irene" stops

或者

gnome-terminal -x "bash" -ic "irene; bash;" # run NEW instance of bash after "irene" stops

如果 irene 函数设置了一些环境变量,它们可能在这个新的 bash 实例中可以访问只有出口他们。

function irene() {
   # ...some code
   export variable="value of variable"
   # ...some code
}

代替

function irene() {
   # ...some code
   variable="value of variable"
   # ...some code
}

相关内容