8
我需要检查另一个用户的主目录中的目录。通常情况下,我会sudo,但是这会导致另一个流程,并且我也失去了我的环境。如何在Bash中sudo?
例如,我有:
if [[ -d "/home/otheruser/svn" ]];
then
echo "SVN exists"
else
echo "SVN does not exist"
fi
我所需要的测试条件与根权限运行。
我需要检查另一个用户的主目录中的目录。通常情况下,我会sudo,但是这会导致另一个流程,并且我也失去了我的环境。如何在Bash中sudo?
例如,我有:
if [[ -d "/home/otheruser/svn" ]];
then
echo "SVN exists"
else
echo "SVN does not exist"
fi
我所需要的测试条件与根权限运行。
你需要在子shell下运行它。例如:
if sudo bash -c '[[ -d "/home/otheruser/svn" ]]'
then
echo "SVN exists"
else
echo "SVN does not exist"
fi
if sudo test -d "/home/otheruser/svn"; then
这样的回答工作太,吮吸我只能接受一个答案。 –
+1 - 有保证的'/ bin/test'的罕见用途之一。 –
更好的答案,因为没有双重评估的风险:如果有人试图参数化其他答案,但做得不好(即''sudo bash -c“[[-d $ filename]]”'),你可能会有恶意作为命令执行的文件名(考虑'filename ='foo]] || rm -rf $ HOME || [[true'')。相比之下,这个答案是完全安全的:'如果sudo test -d“$ filename”'不会运行'test'以外的任何命令。 –