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'
cd
non è un comando esterno, è solo una shell incorporata, quindi sudo
non è possibile eseguirlo. Il motivo per cui cd
esiste 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 cd
programma 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 - USERNAME
e quindi fare ciò di cui hai bisogno come utente. Per uscire basta digitareexit
USERNAME
e poi eseguendo il comando è diverso da quello che esegue direttamente il comando comeUSERNAME
cd
. OP probabilmente vuolesudo -i
.