Risposte:
cdè una shell incorporata . È necessario invocare la shell per eseguire i comandi incorporati della shell:
sudo -u USER sh -c 'cd /home/USER'
O
sudo -u USER bash -c 'cd /home/USER'
cdnon è un comando esterno, è solo una shell incorporata, quindi sudonon è possibile eseguirlo. Il motivo per cui cdesiste solo come shell incorporato è che un processo non può influenzare la directory corrente di un altro processo; pertanto un programma che modifica la directory corrente ed esce immediatamente è inutile. (Quasi inutile: un cdprogramma restituisce uno stato che indica se ha avuto successo.)
Se si desidera passare a una directory e quindi eseguire i comandi come un altro utente, eseguire una shell che fa tutto ciò.
sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'
Tendo a usare: sudo su - USERNAMEe quindi fare ciò di cui hai bisogno come utente. Per uscire basta digitareexit
USERNAMEe poi eseguendo il comando è diverso da quello che esegue direttamente il comando comeUSERNAME
cd. OP probabilmente vuolesudo -i.