我已经阅读了这个问题的答案,但仍然不明白该怎么做:
我以 身份登录到我的 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 作业或编写脚本是一种非常糟糕的做法,您应该尽量避免它。