Bash 在Ubuntu18上的crontab作业脚本中是否有使用.envrc的方法

Bash 在Ubuntu18上的crontab作业脚本中是否有使用.envrc的方法,bash,ubuntu,cron,Bash,Ubuntu,Cron,我们从dir中的.envrc文件导出了一组环境变量。在shell中,可以运行direnv allow,并调用.envrc文件,从而创建env变量 我们希望在运行带有crontab作业的脚本时具有相同的功能,但envrc文件永远不会运行 我们已尝试: 在crontab中:**$主页/.profile;一些/script/to/run 在脚本中:direnv allow 或 在脚本中:eval“$(direnv export bash)” 这些都不起作用,有没有办法从cron作业调用的脚本运

我们从dir中的.envrc文件导出了一组环境变量。在shell中,可以运行
direnv allow
,并调用.envrc文件,从而创建env变量

我们希望在运行带有crontab作业的脚本时具有相同的功能,但envrc文件永远不会运行

我们已尝试:

  • 在crontab中:
    **$主页/.profile;一些/script/to/run
  • 在脚本中:
    direnv allow
  • 在脚本中:
    eval“$(direnv export bash)”

这些都不起作用,有没有办法从cron作业调用的脚本运行.envrc文件?

您可以使用
direnv exec
来实现这一点。它具有参数
[DIR]命令[…ARGS]
。如果
.envrc
文件与脚本位于同一文件中,则可以更改以下内容:

* * * * * sh /path/to/script/script.sh
为此:

* * * * * direnv exec sh /path/to/script/script.sh
如果
.envrc
文件与脚本位于不同的目录中,则必须在
exec
参数之后传递目录路径,如下所示:

* * * * * direnv exec /path/to/secrets sh /path/to/script/script.sh

您可以使用
direnv exec
来实现这一点。它具有参数
[DIR]命令[…ARGS]
。如果
.envrc
文件与脚本位于同一文件中,则可以更改以下内容:

* * * * * sh /path/to/script/script.sh
为此:

* * * * * direnv exec sh /path/to/script/script.sh
如果
.envrc
文件与脚本位于不同的目录中,则必须在
exec
参数之后传递目录路径,如下所示:

* * * * * direnv exec /path/to/secrets sh /path/to/script/script.sh