命令

Linux 下可以通过 export 命令来设置环境变量,但是退出 shell 后自动失效

即通过 export [-fnp][变量名称]=[变量设置值] 命令设置的是临时生效的环境变量

比如

定义环境变量

1
export EMAIL

定义环境变量赋值

1
export EMAIL="example@sss.com"

查看所有的环境变量

1
export -p

参数说明

  • -f  代表[变量名称]中为函数名称。
  • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
  • -p  列出所有的 shell 赋予程序的环境变量。

永久生效需要编辑 /etc/profile 文件

1
vim /etc/profile

在文件末尾添加

1
export [变量名称]=[变量设置值]

比如 export EMAIL="example@sss.com"

使配置文件立即生效

1
source /etc/profile

定时任务问题

比如说编写了一个定时任务脚本,在前台测试一切正常,然后放到 Linux 定时任务(crontab)里去执行,出现了各种问题,此时问题很大可能出在了 系统的环境变量上

比如我们将一个 可执行文件移动到 /usr/local/bin/ ,我们可以直接在 shell 里面输入文件名就可以使用了,又或者我们在 /etc/profile 文件里定义了一些环境变量,这些 crontab 都是不知道的。

系统自动执行任务调度时,除了默认的环境,是不会加载任何其他环境变量的。因此就需要在 crontab 文件中指定任务运行所需的所有环境变量

注意事项

  1. 脚本中涉及文件路径时写要写绝对路径
  2. 脚本执行要用到环境变量时,直接引入,如:0 */1 * * * . /etc/profile && 要执行的命令 ,或者直接在要执行的脚本中加入一行 source /etc/profile 。要注意 . /etc/profile./ 中间有一个空格!
  3. 定时任务不能进入到新的终端(docker exec -it)