2012-05-07 17 views

Odpowiedz

7

Musisz wyeksportować zmienną. Aby zachować środowisko, może nie być konieczne użycie opcji -m do su.

export PROJ_HOME=~/Projects/stable 
+0

Zakładając, że eksport zmienia się na zmienne env root. Czy 'su-m' zachowuje środowisko enologiczne ROOT? czy kenneth's? – 8None1

+0

@ 8None1: Zgodnie ze stroną man: "Zachowaj bieżące środowisko ...". Oznacza to, że środowisko użytkownika nazywającego 'su' (prawdopodobnie kenneth's - root nie jest związane z żadną informacją w pytaniu). –

6

Spróbuj z su -m -l kenneth -c 'echo $PROJ_HOME'. -m powinien chronić środowisko.

EDYTOWANIE Po raz kolejny czytając twoje pytanie, myślę, że mógłbym to zrozumieć odwrotnie. Możesz także spróbować: su -l kenneth -c '. /home/kenneth/.bashrc; echo $PROJ_HOME.

8

Czy wypróbowałeś opcję su -m?

-m, --preserve-environment 
       do not reset environment variables 

Na przykład: su -m Kenneth -c 'echo $ PROJ_HOME'

+5

Hmm, dziękuję za odpowiedź, ale wygląda na to, że nie działa. '$ su -m kenneth -c" echo $ PROJ_PATH "'. Otrzymuję pustą linię. –

-1

apostrofów wokół polecenie:

$ su -l kenneth -c 'echo $PROJ_PATH' 

Podwójne cudzysłowy interpretuje wartość $PROJ_PATH widzianą przez korzeń (pusty ciąg znaków), a następnie wykonuje polecenie "echo (empty string)" jako użytkownik kenneth.

Pojedyncze cudzysłowy zostaną przekazane jako 'echo $PROJ_PATH', a wartość $PROJ_PATH w środowisku Kennetha będzie wyświetlana.

Powiązane problemy