一尘不染

PYTHONPATH在GNU / Linux上不适用于sudo(适用于root用户)

linux

编辑:适用于root,sudo是问题。参见下文。

我有一个带有自己的库的目录,例如我的Python库位于/home/name/lib/py
我已通过将以下行添加到所有用户(包括root)将此目录添加到 Python的PATH/etc/bash.bashrc

export PYTHONPATH=$PYTHONPATH:/home/name/lib/py

它适用于所有用户(包括root用户)。但这不适用于sudo。有什么办法可以使sudo使用/etc/bash.bashrc吗?

编辑:更多信息:

我已经添加PYTHONPATH到sudoers文件像这样: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

阅读 311

收藏
2020-06-03

共1个答案

一尘不染

我的解决方法是Defaults !env_reset从sudoers中删除。

但是,我不得不Defaults env_keep += "PYTHONPATH"保持警惕。
我实际上已经添加了Defaults env_reset(它会重置环境变量),但是由于,它仍然可以工作env_keep

似乎env_keep!env_reset彼此冲突,但这只是一个猜测。


因此,整个过程:

  1. 添加export PYTHONPATH=/your/custom/path~/.bashrc/etc/bash.bashrc
  2. 添加PYTHONPATHDefaults env_keep += "ENV1 ENV2 ..."sudoers文件中
  3. Defaults !env_reset从sudoers文件中删除(如果存在)
2020-06-03