linux 设置环境变量,及定时任务失效问题
命令
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 文件中指定任务运行所需的所有环境变量
注意事项
- 脚本中涉及文件路径时写要写绝对路径
- 脚本执行要用到环境变量时,直接引入,如:
0 */1 * * * . /etc/profile && 要执行的命令
,或者直接在要执行的脚本中加入一行source /etc/profile
。要注意. /etc/profile
。.
和/
中间有一个空格! - 定时任务不能进入到新的终端(docker exec -it)
本文采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ShiGuang
评论