Réponses:
cdest un shell intégré . Vous devez appeler le shell pour exécuter les commandes internes du shell:
sudo -u USER sh -c 'cd /home/USER'
OU
sudo -u USER bash -c 'cd /home/USER'
cdn'est pas une commande externe, c'est seulement un shell intégré, donc sudone peut pas l'exécuter. La raison pour laquelle cdexiste uniquement en tant que shell intégré est qu'un processus ne peut pas affecter le répertoire courant d'un autre processus; par conséquent, un programme qui change le répertoire courant et se ferme immédiatement est inutile. (Presque inutile: un cdprogramme retournerait un statut qui indique s'il a réussi.)
Si vous souhaitez passer à un répertoire, puis exécuter des commandes en tant qu’autre utilisateur, exécutez un shell qui fait tout cela.
sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'
J'ai tendance à utiliser: sudo su - USERNAMEpuis à faire ce dont vous avez besoin en tant qu'utilisateur. Pour quitter il suffit de taperexit
USERNAMEque puis l'exécution de la commande est différente de l'exécution directe de la commande en tant queUSERNAME
cd. OP veut probablementsudo -i.