【发布时间】:2020-05-08 18:59:32
【问题描述】:
我需要将在我的个人.bashrc 中定义的个人env 变量$FTP111_PASSWD 发送到crontab 执行。 如何在 crontab 上设置环境变量?
我为crontab 执行而创建的名为cron4_etc.sh 的原始shell 脚本是:
#!/bin/bash
cd /myFolder/
ftp -n -i <<EOF
open 101.111.111.111
user myUser "$FTP111_PASSWD"
mget check_*.log
bye
EOF
如果我通过终端 ./cron4_etc.sh 执行脚本,它执行得很好,但如果我使用以下 crontab 行启动它
*/20 * * * * /home/myUser/cron4_etc.sh > /tmp/cron4.log 2>&1
crontab 说
密码:登录错误。\n登录失败。
我尝试使用this suggestion 改进我的脚本,但错误仍然存在:
#!/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
PS:我使用的是 Ubuntu 18 LTS,但问题是针对通用 crontab。
【问题讨论】:
-
谢谢@amain,有道理。正确的问题似乎是这两个步骤: 1. 我的
$FTP_etc_PASSWD变量最好放在哪里,.bash_profile? 2. 如何在我的 Crontab 脚本中“运行这个地方”? ...或者最好的放在/etc/environment?
标签: cron environment-variables