EDIT: Works for root, sudo is the problem. Read below.
I have a directory with my own libraries, e.g. my Python libraries are located at /home/name/lib/py.
I’ve added this directory to Python’s PATH for all users (including root) by adding the following line to /etc/bash.bashrc:
export PYTHONPATH=$PYTHONPATH:/home/name/lib/py
It works for all users (including root). But it doesn’t work for sudo. Is there any way I can make sudo use /etc/bash.bashrc?
EDIT: More information:
I’ve added PYTHONPATH to sudoers file like so: Defaults env_keep += "HOME PYTHONPATH". It sitll doesn’t work.
env | grep PYTHON:
PYTHONDONTWRITEBYTECODE=1
PYTHONPATH=/home/name/lib/py
sudo env | grep PYTHON:
PYTHONDONTWRITEBYTECODE=1
sudo echo $PYTHONPATH:
/home/name/lib/py
The fix in my case was to remove
Defaults !env_resetfrom sudoers.But, I had to keep
Defaults env_keep += "PYTHONPATH"in sudoers.I’ve actually added
Defaults env_reset(which resets environment variables), but it still works because ofenv_keep.It seems that
env_keepand!env_resetconflict with eachother, but that’s just a guess.So, the whole process:
export PYTHONPATH=/your/custom/pathto~/.bashrcor/etc/bash.bashrcPYTHONPATHtoDefaults env_keep += "ENV1 ENV2 ..."in sudoers fileDefaults !env_resetfrom sudoers file if present