symptom:$ sudo -E adbsudo: adb: command not found$ which adb/home/usr/opt/android/platform-tools/adb$ sudo -E echo ${PATH}...:/home/usr/opt/android/platform-tools$ stat ~/opt/android/platform-tools/adbAccess: (0775/-rwxrwxr-x)  Uid: ( 1000/ usr)   Gid: ( 1000/ usr)@richard, thanks. I did this:$ echo 'echo $PATH' | sudo sh/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin$ echo 'echo $PATH' | sudo -E sh/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binso it is not in the path of sudo. But how can I make the sudo respect the PATH temporarily? 
sudo -E cannot excute some commands located in home dir?
sudo
No it is not! (/home/usr/opt/android/platform-tools is not in the PATH within the sudo environment.) ${PATH} is evaluated by your shell before sudo is run, thus substituting the value of PATH before sudo is started, not the value within sudo.You are correct is suspecting the PATH. However you test gives a false answer because of the order of evaluation.You need to do sudo -E /home/usr/opt/android/platform-tools/adb