사용자의 환경 변수를 로드하는 동안 다른 방법으로 명령 실행

사용자의 환경 변수를 로드하는 동안 다른 방법으로 명령 실행

다른 사용자로 스크립트를 실행하려고 하는데 사용자가 .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

관련 정보