我有一些命令.profile,我想从我的crontab.
例如,如果我有,
alias notify-me="~/bin/notify.pl -u user1"
alias notify-team="~/bin/notify.pl -u user1 user2 user3 user4 ...."
Run Code Online (Sandbox Code Playgroud)
我只想调用别名
0 11 * * * notify-team
Run Code Online (Sandbox Code Playgroud)
因此,如果 my 中的列表.profile已更新,我也不必更新crontab. 但是,我似乎无法在我的crontab. 有解决办法吗?
我尝试了这里的建议来设置环境(例如 /bin/bash -lc 和脚本包装器脚本)。似乎这适用于脚本但不适用于别名。
有任何想法吗?
Chr*_*rel 10
从关于别名的联机帮助页:
注意别名在非交互式 shell 中默认不展开, 它可以通过设置“expand_aliases”来启用 使用 shopt 的 shell 选项。
因此,请尝试shopt -s expand_aliases在采购脚本的开头使用。这应该让你使用华纳的建议。
带有“源”的 bash -c 应该可以工作:
0 11 * * * bash -c "source .profile && notify-team"
Run Code Online (Sandbox Code Playgroud)
这也可能有效。句号的意思是“来源”
0 11 * * * . .profile && notify-team
Run Code Online (Sandbox Code Playgroud)
正如 Chris 所指出的,非交互式 shell 的默认 shell 选项是不扩展别名。这是我发现可行的解决方案。
编写脚本,启用 shell 选项,并获取别名。请特别注意它.bashrc是在执行时获取的,这就是为什么在启用 Expand_aliases 后必须再次获取它的原因。
对于最初的错误建议,我深表歉意。这比我最初预期的更加晦涩难懂。
脚本:
#!/bin/bash
shopt -s expand_aliases
source /home/wmoore/.bashrc
notify-team
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18570 次 |
| 最近记录: |