Linux Bash无法设置环境变量

Linux Bash无法设置环境变量,linux,bash,shell,Linux,Bash,Shell,我的crontab中有: * * * * * cd /etc && . ./cron.sh>>cron.log 在我的cron.sh(可执行文件)中,我有: 它使用cron和手动运行,但是只有在我使用以下命令手动运行时,才会设置环境变量: . ./cron.sh 谁能帮忙吗。我知道这和来源有关,但我搞不懂 这也不起作用: * * * * * cd /etc && sh ./cron.sh>>cron.log 将导出当前shell中的变

我的crontab中有:

* * * * * cd /etc && . ./cron.sh>>cron.log
在我的cron.sh(可执行文件)中,我有:

它使用cron和手动运行,但是只有在我使用以下命令手动运行时,才会设置环境变量:

. ./cron.sh
谁能帮忙吗。我知道这和来源有关,但我搞不懂

这也不起作用:

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

将导出当前shell中的变量,该shell是由
cron
生成的,而不是您的

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


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

您不能通过cron作业来实现这一点

事实上,一般来说,你根本做不到。不能从外壳外部设置外壳的环境变量。UNIX/Linux操作系统体系结构不允许这样做

您可以通过
/etc/profile
为所有用户设置环境变量,但

  • /etc/profile
    文件仅在用户登录时执行,并且
  • 用户可以覆盖此处设置的任何环境变量

  • 你想做什么?我想为所有用户或
    /etc/profile
    设置一个变量,因为所有用户都已共享该变量。@chepner这是我等人的一部分。;)我会更新我的答案,让大家明白这一点。
    * * * * * cd /etc && sh ./cron.sh>>cron.log