在“at”作业中使用 bash 函数

问题描述 投票:0回答:1

at命令可用于安排作业以供将来执行。

这会在执行命令之前设置环境,以匹配在“at”作业创建时的环境。

但是,这似乎不包括环境中定义的 bash 函数。我尝试使用“export -f”导出函数,但这不会出现在为 at 作业创建的环境中。

有谁知道如何让函数在“at”作业的上下文中运行?我知道我可以转换为文件中定义的正确命令,但我很好奇到底是什么阻止了该函数在环境中被拾取。

值得注意的是,如果在环境中执行“export -f myfun”,然后执行“export -p”,则该函数不会出现在环境中。这是一个 bash 问题吗?

Bash 版本:GNU bash,版本 5.2.21(1)-release (x86_64-pc-linux-gnu)

bash function at-command
1个回答
0
投票

您使用

script.sh
运行的脚本(比如说
at
)将由
atd
守护进程运行,并且与您当前的 shell 会话不再相关。

解决方法:

at ... << EOF
/bin/bash << INNER
$(declare -f)
$(cat script.sh)
INNER
EOF
© www.soinside.com 2019 - 2024. All rights reserved.