编辑:适用于root,sudo是问题。参见下文。
我有一个带有自己的库的目录,例如我的Python库位于/home/name/lib/py。 我已通过将以下行添加到所有用户(包括root)将此目录添加到 Python的PATH 中/etc/bash.bashrc:
/home/name/lib/py
/etc/bash.bashrc
export PYTHONPATH=$PYTHONPATH:/home/name/lib/py
它适用于所有用户(包括root用户)。但这不适用于sudo。有什么办法可以使sudo使用/etc/bash.bashrc吗?
编辑:更多信息:
我已经添加PYTHONPATH到sudoers文件像这样:Defaults env_keep += "HOME PYTHONPATH"。西特尔不起作用。
PYTHONPATH
Defaults env_keep += "HOME PYTHONPATH"
env | grep PYTHON: PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=/home/name/lib/py sudo env | grep PYTHON: PYTHONDONTWRITEBYTECODE=1 sudo echo $PYTHONPATH: /home/name/lib/py
我的解决方法是Defaults !env_reset从sudoers中删除。
Defaults !env_reset
但是,我不得不Defaults env_keep += "PYTHONPATH"保持警惕。 我实际上已经添加了Defaults env_reset(它会重置环境变量),但是由于,它仍然可以工作env_keep。
Defaults env_keep += "PYTHONPATH"
Defaults env_reset
env_keep
似乎env_keep和!env_reset彼此冲突,但这只是一个猜测。
!env_reset
因此,整个过程:
export PYTHONPATH=/your/custom/path
~/.bashrc
Defaults env_keep += "ENV1 ENV2 ..."