我正在定义一个函数,.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
}