Je veux exécuter une commande sur un shell au nom d'un autre utilisateur. La commande est la suivante:
sudo -u USER cd /home/USER
Je reçois
sudo: cd: command not found
Quelle est la syntaxe correcte pour que la commande passe à sudo?
sudo
cd-command
coffeMug
la source
la source
cd
. OP veut probablementsudo -i
.cd
n'est pas une commande externe, c'est seulement un shell intégré, doncsudo
ne peut pas l'exécuter. La raison pour laquellecd
existe 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: uncd
programme 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.
la source
J'ai tendance à utiliser:
sudo su - USERNAME
puis à faire ce dont vous avez besoin en tant qu'utilisateur. Pour quitter il suffit de taperexit
la source
USERNAME
que puis l'exécution de la commande est différente de l'exécution directe de la commande en tant queUSERNAME