macOS Catalina(10.15) 还有一个重大的变化 —— 因为 zsh 已经取代 bash,成为了新版操作系统中的默认 shell 命令,需要~/.zshrc
老版本mac os:~/.bash_profile
macOS Catalina:~/.zshrc
添加一个CONFIG_ENV的环境变量
sudo vi ~/.zshrc
文件中加上
export CONFIG_ENV="develoment"
重新打开终端后echo $CONFIG_ENV
就能看到生效了
运行python
import os;print(os.getenv("CONFIG_ENV"))
也能获取到CONFIG_ENV
但是,假如运行sudo python
import os;print(os.getenv("CONFIG_ENV"))
则获取到的是None
查了一天资料发现
sudo中默认配置会重置环境变量,所以使用sudo的时候需要小心这点。
接下来解决
如何让sudo继承我们需要的环境变量?
有如下两种方法:
1、手动在sudo命令加上需要的某个环境变量
sudo env CONFIG_ENV='develoment' python
2、
sudo就是root用户,只读取/etc/profile和/etc/bashrc的环境变量,我们只需
sudo vi /etc/bashrc
文件中加上
export CONFIG_ENV="develoment"
```
修改/etc/sudoers文件把Defaults env_reset改成Defaults !env_reset
```
sudo vi /etc/sudoers
#通过esc:/env查找到关键字目标行
把Defaults env_reset改成Defaults !env_reset
```
这样sudo命令就不会重置环境变量了
sudo python启动也能获取CONFIG_ENV变量
![屏幕快照 2016-12-30 下午5.05.34.png](http://upload-images.jianshu.io/upload_images/2042197-306796cbcf473f9a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)