如何在 crontab 中使用 .profile 别名

如何在 crontab 中使用 .profile 别名

我已经阅读了这个问题的答案,但仍然不明白该怎么做:

如何在我的 crontab 中使用我的别名?

我以 身份登录到我的 Ubuntu 服务器root。我的 中有以下命令.profile

alias test-alias="echo test"

我的 crontab 文件中有以下命令:

11 9 * * *      source /root/.profile; test-alias > /root/tmp.output 2>&1

当此命令运行时,唯一的输出tmp.output是:

/bin/sh: 1: test-alias: not found

我在这里做错了什么?如何test-alias在我的crontab文件中使用我的?我想直接在命令中使用别名,我不想创建额外的脚本来运行别名。

答案1

虽然这不是最漂亮的解决方案,尽管我建议您不要使用它,但您可以做的是:

11 9 * * *      bash -ic "test-alias > /root/tmp.output 2>&1"

这将以交互式 shell (-i) 的形式运行 bash,并因此读取 bashrc。要确保 .profile 已获取,您需要在 .bashrc 中包含此块:

[ -f ~/.profile ] && source ~/.profile

请注意,运行 cron 作业或编写脚本是一种非常糟糕的做法,您应该尽量避免它。

相关内容