GNU/Linux >> Linux Esercitazione >  >> Linux

PYTHONPATH non funziona per sudo su GNU/Linux (funziona per root)

Un altro suggerimento:

sudo echo $PYTHONPATH:
    /home/name/lib/py

Non funzionerà. Shell lo interpreterà così:

1) espandere $PYTHONPATH dalla variabile env per esempio:/usr/lib/python

2) eseguire "sudo echo /usr/lib/python"


La correzione nel mio caso è stata la rimozione di Defaults !env_reset da sudoers.

Ma ho dovuto mantenere Defaults env_keep += "PYTHONPATH" nei sudoers.
In realtà ho aggiunto Defaults env_reset (che reimposta le variabili di ambiente), ma funziona ancora a causa di env_keep .

Sembra che env_keep e !env_reset sono in conflitto tra loro, ma è solo un'ipotesi.

Quindi, l'intero processo:

  1. aggiungi export PYTHONPATH=/your/custom/path a ~/.bashrc o /etc/bash.bashrc
  2. aggiungi PYTHONPATH a Defaults env_keep += "ENV1 ENV2 ..." nel file sudoers
  3. rimuovi Defaults !env_reset dal file sudoers se presente

Alternative alla manipolazione di PYTHONPATH :

  • virtualenv
  • distutils

Lo stesso vale per il PATH variabile, non viene nemmeno trasferita nell'ambiente del superutente, anche se stai passando il flag di conservazione dell'ambiente -E .

Sto usando questo comando sudo ora senza altre modifiche:

sudo -HE env PATH=$PATH PYTHONPATH=$PYTHONPATH ./bin/myscript

Poiché è un approccio alternativo che funziona (per me), ho pensato di condividerlo qui.


Linux
  1. Linux – Perché Setuid non funziona??

  2. Linux:il led Caps Lock non funziona su console Linux?

  3. Linux – Le cuffie non funzionano Linux Mint 18?

  4. 11 migliori software CAD per Linux

  5. Configurazione di sudo per abilitare i comandi per utenti non root in Linux

10 Utili configurazioni di Sudoer per l'impostazione di "sudo" in Linux

Correggi il touchpad Fare clic su Non funziona in Linux Mint

Come impostare i privilegi di Sudo per l'utente in Linux

Come abilitare il sudo senza password per l'utente in Linux

Linux limits.conf non funziona?

Perché USB non funziona in Linux quando funziona in UEFI/BIOS?