环境变量就是告诉程序在运行时应该以何种姿势运行,比如程序运行的目录,运行的环境,甚至是规定shell命令的颜色等等。
合理配置环境变量是程序正确运行的前提。 不依赖环境变量运行的程序,无需配置环境变量
从大的方面来讲,环境变量分为三类:
一: 系统级的环境变量 针对所有用户都生效
二: 用户级别的环境变量 只对当前登录的用户生效
三: 临时环境变量 只对当前登录的shell生效,退出时失效。
# 这几个文件都可以用来配置环境变量
etc/profile
etc/bashrc
~/.bash_profile
~/.bashrc
答案:建议优先配置 ~/.bashrc 文件,原因如下:
-
首先etc目录下的文件是用来修改系统级别的配置,会影响所有用户的行为,如非必要,不建议修改此处的内容。
-
通常用到~/bash_profile的时候,会自动读取~/.bashrc。
解释: profile和bashrc分别对应两种使用shell的模式,分别是login-shell和non-login-shell。login-shell指当用户输入密码登陆的操作,比如打开Mac,输入账号密码,进入系统。non-login-shell指用户不需要有输入密码的操作,比如打开终端。
两种不同的模式调用环境变量的顺序是不同的。
# login-shell 读取顺序:
etc/profile -> ~/.profile -> ~/.bashrc -> /etc/bashrc
# non-login-shell 读取顺序:
~/.bashrc -> /etc/bashrc
参考资料:https://www.cnblogs.com/Monitor/p/4020223.html, https://blog.csdn.net/ZoeYen_/article/details/78560905
系统级环境变量
vim /etc/profile
# 在里面加入(以Flask启动需要的环境变量为例,下同):
export FLASK_ENV=production
source /etc/profile
用户级别的环境变量
vim ~/.bashrc
# 在里面加入:
export FLASK_ENV=production
# 立即生效
source ~/.bashrc
临时环境变量
export FLASK_ENV=production
Mac OS 环境变量配置和 Linux 略有不同。
当 ./bash_profile 存在时,便不会继续读取 ~/.bashrc。因此,一般情况下只需要配置./bash_profile 即可。
# 用户级别的环境变量
vim ~/.bash_profile
# 在里面加入:
export FLASK_ENV=production
# 立即生效
source ~/.bash_profile