2012-05-17 10 views
8

Potrzebuję sprawdzić katalog w katalogu osobistym innego użytkownika. Zwykle robiłbym sudo, ale to rozprasza inny proces i tracę też środowisko.Jak mogę zrobić sudo w Bash?

Na przykład mam:

if [[ -d "/home/otheruser/svn" ]]; 
then 
    echo "SVN exists" 
else 
    echo "SVN does not exist" 
fi 

muszę stan testu, aby uruchomić z uprawnieniami administratora.

Odpowiedz

5

Należy uruchomić pod podpowłoką. Przykład:

if sudo bash -c '[[ -d "/home/otheruser/svn" ]]' 
then 
    echo "SVN exists" 
else 
    echo "SVN does not exist" 
fi 
26
if sudo test -d "/home/otheruser/svn"; then 
+1

Ta odpowiedź pracował też ssie mogę przyjąć tylko jedną odpowiedź. –

+2

+1 - Jedno z rzadkich zastosowań '/ bin/test', które jest uzasadnione. –

+0

Lepsza odpowiedź zdecydowanie, ponieważ nie ma ryzyka podwójnej oceny: jeśli ktoś próbował sparametryzować drugą odpowiedź, ale zrobił to źle (tj. 'Sudo bash -c" [[-d $ nazwa_pliku]] "') mógłbyś być złośliwy nazwy plików wykonywane jako komendy (weź pod uwagę 'filename = 'foo]] || rm -rf $ HOME || [[true''). W przeciwieństwie do tego, ta odpowiedź jest całkowicie bezpieczna: 'jeśli sudo test -d" $ filename "' nie uruchomi żadnego polecenia poza 'testem'. –

Powiązane problemy