加载用户的环境变量时以其他方式运行命令

加载用户的环境变量时以其他方式运行命令

我正在尝试以另一个用户身份运行脚本,并且用户已.bashrc正确加载(它是一个 python 脚本,并且依赖于$PYTHONPATH正确设置)。

例如,我尝试了我发现的一切这里,但我能从系统中得到的最好结果是一个空的$PYTHONPATH(这比我原来的要好,它实际上使用了我的$PYTHONPATH)。

用例是我正在教学生有关 shebangs 和路径之类的内容,并且我想要一种自动方法来检查他们的脚本是否正常。我可以通过使用 进入它们的环境来检查它们sudo su <username>,但这非常乏味。

如何以另一个用户的身份执行脚本,并加载他们的环境,就像我sudo su <username>自己使用然后运行它一样?

答案1

我认为这就是 python 虚拟环境的好处。
为每个 Python 项目创建隔离且可移植的环境。
不需要PYTHONPATH。您可以将所有项目共享给所有用户,并在项目环境之间切换。
如果使用版本控制,只需将项目克隆到您自己的环境中,然后从那里开始。您可以在网络上找到许多操作方法。

否则 sudo su <username> -c python /somepath/somescript.py至少应该在单行代码中运行一些脚本。

更新:
添加-l开关。检查环境

sudo su -l foo -c printenv

像这样添加Pythonpath到/home/foo/.bashrc
export PYTHONPATH=/banana

启动脚本的 oneliner 是
sudo su -l <username> -c python /somepath/somescript.py

相关内容