终端上的Exec功能

时间:2016-02-19 19:01:28

标签: bash shell sh

我已经创建了一个shell脚本,我想在终端上Exec一个函数。

例如:

function update () {
     sudo apt update
}

function Exec () {
    xfce4-terminal --maximize -x "$1"
}

但是当我执行这个时:

Exec "update"Exec "$(update)"

我收到此错误:Failed to execute child process "update" (No such file or directory)

1 个答案:

答案 0 :(得分:1)

你不能这样做。

update函数仅存在于shell进程中。 xfce4-terminal进程无法查看。 -x的参数必须是可执行命令,而不是shell函数。

您可以做的是创建一个与您的update函数完全相同的shell脚本(确保它可执行并安装在$PATH中的某个位置)并传递名称那个shell脚本到xfce4-terminal

或者,在这种特殊情况下,您可以这样做:

xfce4-terminal --maximize -x sudo apt update

或者您可以将sudo apt update作为参数传递给Exec函数。但总的来说,对外部程序可见的一系列shell命令的唯一方法(好吧,差不多)就是将它们包装在shell脚本中。