如何在 crontab 上使用 env .bashrc 变量?

Pet*_*uss 2 cron environment-variables

我需要发送一个在我个人定义的个人env变量 来执行。如何在 crontab 上设置环境变量?$FTP111_PASSWD.bashrccrontab

cron4_etc.sh我为执行而创建的名为 的原始 shell 脚本crontab是:

#!/bin/bash

cd /myFolder/
ftp -n -i <<EOF
open 101.111.111.111
user myUser "$FTP111_PASSWD"
mget check_*.log
bye
EOF
Run Code Online (Sandbox Code Playgroud)

如果我通过终端执行脚本,它执行得很好,但是如果我使用以下行./cron4_etc.sh启动它crontab

  */20 *     *   *   *     /home/myUser/cron4_etc.sh > /tmp/cron4.log 2>&1
Run Code Online (Sandbox Code Playgroud)

crontab 说

密码: 登录不正确。\n登录失败。

我尝试使用此建议改进我的脚本,但错误仍然存​​在:

#!/usr/bin/env bash

# set environment
source /home/myUser/.bashrc

cd /tmp/pg_io/PGW
ftp -n -i <<EOF
open 101.111.111.111
user myUser "$FTP111_PASSWD"
mget check_*.log
bye
EOF
Run Code Online (Sandbox Code Playgroud)

PS:我使用的是 Ubuntu 18 LTS,但问题是针对通用 crontab 的。

B--*_*ian 7

我最喜欢的解决方案来自Augusto Destrero ,他对一个非常相似的问题提供了以下答案:

在 Ubuntu 中设置 vars/etc/environment也对我有用。从 12.04 开始,为 cron 加载 /etc/environment 中的变量。

有些人建议做一个简单的env >> /etc/environment附加所有环境变量的操作,但我会小心谨慎,而不是/etc/environment手动检查。