ユーザーの環境変数のロード中に別の方法でコマンドを実行する

ユーザーの環境変数のロード中に別の方法でコマンドを実行する

別のユーザーとしてスクリプトを実行しようとしていますが、ユーザーは.bashrc正しくロードされています(Pythonスクリプトであり、$PYTHONPATH正しく設定する必要があります)。

たとえば、私が見つけたすべてを試しました。ここしかし、システムから得られる最良のものは空のシステムでした$PYTHONPATH(実際に私のものを使用した元のシステムよりも優れています$PYTHONPATH)。

ユースケースは、生徒にShebangsやパスなどのことを教えており、スクリプトが正しいことを確認する自動化された方法が欲しいということです。私はその中に入る環境を使ってそれらを調べることができますが、sudo su <username>それは非常に退屈です。

他のユーザーとしてスクリプトを実行し、私がsudo su <username>自分で使用しているように環境をロードして実行するにはどうすればよいですか?

答え1

これがPython仮想環境の利点だと思います。
各Pythonプロジェクトごとに隔離され、移植可能な環境を作成します。
不要PYTHONPATH。すべてのプロジェクトをすべてのユーザーと共有し、プロジェクト環境を切り替えることができます。
バージョン管理を使用している場合は、プロジェクトを自分の環境に複製してそこから始めます。 Webで多くの方法を見つけることができます。

それ以外の場合は、 sudo su <username> -c python /somepath/somescript.py少なくとも1行のコードでいくつかのスクリプトを実行する必要があります。

修正する:
スイッチを追加します-l。環境確認

sudo su -l foo -c printenv

Pythonpathを追加して[いいね]をタップします。/home/foo/.bashrc
export PYTHONPATH=/banana

スクリプトを実行するオネライナは次のとおりです。
sudo su -l <username> -c python /somepath/somescript.py

関連情報