首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cron加载bash脚本设置var env

使用cron加载bash脚本设置var env
EN

Stack Overflow用户
提问于 2021-11-08 21:28:42
回答 2查看 50关注 0票数 0

我希望能够在crontab中每小时播放一个脚本,同时回顾以前在系统启动时定义的环境变量(类似于/etc/profile文件中的export EXTENRALIP=0 )。此环境变量将由此脚本修改,并在下一次轮转时检索该值。我试过这样做,但是导出值不会改变变量。

rotation.sh

代码语言:javascript
复制
#!/bin/bash

LOGFILE=/var/log/dns.log

. livebox.sh
. network.sh
. dns.sh


# Grab the var env
IPWAN=$(echo $EXTERNALIP)

# Grab the IPWAN
IP=$(get_livebox_ip)

# Set the var env if changed
if [ "$IPWAN" != "$IP" ]
    export EXTERNALIP=$IP
EN

回答 2

Stack Overflow用户

发布于 2021-11-09 06:01:15

就像丹提到的,我认为那是不可能的。

考虑从磁盘中写入和读取数据。

代码语言:javascript
复制
echo "$IP" > /somewhere/externalip
IPWAN="$(cat /somewhere/externalip)"
票数 1
EN

Stack Overflow用户

发布于 2021-11-08 22:45:25

那是做不到的。

不管cron作业不会继承任何存在的环境,脚本的环境在退出时都会消失。即使没有cron,这也是行不通的。

您可以使用shebang #!/bin/bash -l来获得脚本源/etc/profile,或者在crontab中使用EXTERNALIP=0 /path/to/rotation.sh,但是除了在每个作业的环境中之外,您永远不能在任何地方更新变量。

您可能会在shell中寻找脚本来使其工作,但是每个cron作业都是一个新的shell,当任务完成时,它的环境就会消失。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69890143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档