Bash无法设置环境变量

时间:2019-06-03 14:46:15

标签: linux bash shell

我的crontab中有这个文件:

* * * * * cd /etc && . ./cron.sh>>cron.log

在我的cron.sh(可执行文件)中,我有:

#!/bin/sh

echo "hello world"
export MyVar="abcd"

它既可以与cron一起运行,也可以手动运行,但是仅当我使用以下命令手动运行时,才设置环境变量:

. ./cron.sh

任何人都可以帮忙。我知道它与源有关,但我无法弄清楚。

这也不起作用:

* * * * * cd /etc && sh ./cron.sh>>cron.log

2 个答案:

答案 0 :(得分:5)

.将在当前shell中导出变量 ,它是cron生成的变量,而不是您的变量。

如果要在shell中添加额外的变量,请使用~/.profile等(特别是所有用户共享的/etc/profile)。

答案 1 :(得分:2)

  

我正在尝试为所有用户设置一个变量

您不能通过cron作业来做到这一点。

实际上,通常您根本无法做到。 Shell的环境变量不能从Shell外部设置。 UNIX / Linux操作系统体系结构不允许。

可以可以通过/etc/profile为所有用户设置环境变量,除了...

  1. /etc/profile文件仅在用户登录时执行,并且
  2. 用户可以覆盖在那里设置的任何环境变量。