2012-05-07 19 views

cevap

7

Sen değişkeni dışa aktarmanız gerekir. Çevreyi korumak için -m seçeneğini su kullanmanız gerekmeyebilir. komutu etrafında

export PROJ_HOME=~/Projects/stable 
+0

Dışa aktarmanın, kökün env varslarına değiştiğini varsayarsak. 'Su -m' ROOT'un env'sini koruyor mu? ya da kenneth? – 8None1

+0

@ 8None1: Man sayfasına göre: "Mevcut ortamı koru ...". Yani bu, 'su' denen kullanıcının çevresi anlamına gelir (muhtemelen kenneth - root, sorudaki herhangi bir bilgiye dayanmamaktadır). –

6

su -m -l kenneth -c 'echo $PROJ_HOME' ile deneyin. -m çevreyi korumalıdır.

EDIT Sorunuzu bir kez daha okudum, sanırım tersine döndüğünü anlayabilirim. Bunu da deneyebilirsiniz: su -l kenneth -c '. /home/kenneth/.bashrc; echo $PROJ_HOME.

8

Su-m seçeneğini denediniz mi?

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

Örneğin: su'nun -m Kenneth -c 'echo $ PROJ_HOME'

+5

Hmm, cevabınız için teşekkürler, ancak işe yaramadı gibi görünüyor. $ su -m kenneth -c "echo $ PROJ_PATH" '. Boş bir hat alıyorum. –

-1

Kullanım tek tırnak:

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

Çift tırnak sonra kullanıcı Kenneth olarak komutu "echo (empty string)" çalıştırır, kök (boş dize) tarafından görülen $PROJ_PATH değerini yorumlar.

Tek tırnaklar, komut olarak 'echo $PROJ_PATH' geçirecek ve kenneth ortamında $PROJ_PATH değeri yankılanacak.

İlgili konular