2012-05-17 22 views
8

Tôi cần kiểm tra thư mục trong thư mục chính của người dùng khác. Thông thường tôi sẽ sudo nhưng điều đó dĩa một quá trình và tôi cũng mất môi trường của tôi.Làm thế nào để tôi sudo nếu trong Bash?

Ví dụ, tôi có:

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

tôi cần những điều kiện kiểm tra để chạy với quyền root.

Trả lời

5

Bạn cần chạy dưới một vỏ bọc con. Ví dụ:

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

Câu trả lời này đã làm việc quá, sucks tôi chỉ có thể chấp nhận một câu trả lời. –

+2

+1 - Một trong những cách sử dụng hiếm hoi của '/ bin/test' được bảo hành. –

+0

Câu trả lời tốt hơn cho đến nay, vì không có nguy cơ đánh giá gấp đôi: Nếu ai đó cố gắng tham số hóa câu trả lời khác nhưng đã làm nó xấu (ví dụ: 'sudo bash -c" [[-d $ filename]] "') tên tệp được thực hiện dưới dạng các lệnh (xem xét 'filename = 'foo]] || rm -rf $ HOME || [[true''). Ngược lại, câu trả lời này hoàn toàn an toàn: 'nếu sudo test -d" $ filename "' sẽ không chạy bất kỳ lệnh nào ngoài 'test'. –

Các vấn đề liên quan