2016-02-19 88 views
0

我創建了一個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

什麼是錯誤信息? – AlG

+0

這是錯誤消息: 未能執行子進程「更新」(沒有這樣的文件或目錄) –

+0

您是否嘗試將更新函數傳遞給Exec函數並使其作爲$ 1參數運行? – AlG

回答

1

你不能做到這一點。

update函數僅在您的shell進程中存在。 xfce4-terminal進程無法識別它。 -x的參數必須是可執行命令,而不是shell函數。

你可以做的是創建一個shell腳本,做同樣的事情,你update功能(確保它的可執行文件,並在您$PATH某處安裝)和傳遞shell腳本的名稱xfce4-terminal

或者說,在這種特殊情況下,你可以只是做:

xfce4-terminal --maximize -x sudo apt update 

,或者你可以通過sudo apt update作爲參數傳遞給你的Exec功能。但總的來說,使外部程序可見的一系列shell命令的唯一方式(好,差不多)是將它們包裝在shell腳本中。

+0

我知道和thnx但我不能在終端內運行一個功能? –

+0

您只能在定義它的shell中運行shell函數。 –