gpt4 book ai didi

linux - crontab:获取BASH内部变量

转载 作者:太空狗 更新时间:2023-10-29 11:14:39 25 4
gpt4 key购买 nike

我怎样才能以这种方式设置我的 crontab 环境,以便它可以访问内置的 BASH 变量,例如 $HOME、$PWD、$OLDPWD、$USER、$PATH、$PS1 等,所以依赖这些变量的脚本可以在 crontab 环境中运行吗?这是采购一些我不知道的文件的问题,还是稍微复杂一些的问题?

最佳答案

这些变量总是按预期设置:HOME、PWD、USER。

如果您像这样安排脚本:

0 0 * * * /path/to/script.sh

脚本的第一行是#!/bin/bash 然后可能它将源~/.bashrc 但不是~/.bash_profile~/.profile 运行时。除此之外,您提到的变量应该按预期工作。例如,如果您在脚本中更改目录,则 OLDPWDPWD 将更新。我看不出 PS1 与脚本有什么关系。

另一方面,如果在您的 crontab 中您想要安排单个命令并且您希望获取 .bashrc,那么您必须这样写:

0 0 * * * . .bashrc; somecmd
# or:
0 0 * * * bash -c somecmd

另外请记住,虽然您可以在 crontab 中设置变量,但它的工作方式与 shell 脚本中的变量不同。例如这些工作:

SHELL = /bin/bash
SHELL=/bin/bash
PATH=~/bin:/usr/bin/:/bin

另一方面,这不会达到您的预期:

PATH=$HOME/bin:$PATH

man 5 crontab 中所述,值(= 之后的任何内容)不会被解析,因此 $HOME$本例中的 PATH 将按字面意思进行。

关于linux - crontab:获取BASH内部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20600152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com