Ich möchte einen Befehl für eine Shell im Auftrag eines anderen Benutzers ausführen. Der Befehl lautet wie folgt:
sudo -u USER cd /home/USER
Ich bekomme
sudo: cd: command not found
Was ist die richtige Syntax für den Befehl, der an sudo übergeben wird?
sudo
cd-command
Kaffeebecher
quelle
quelle
cd
. OP will wahrscheinlichsudo -i
.cd
ist kein externer Befehl, sondern nur eine eingebaute Shell,sudo
die nicht ausgeführt werden kann. Der Grund, warumcd
nur eine eingebaute Shell existiert, ist, dass ein Prozess das aktuelle Verzeichnis eines anderen Prozesses nicht beeinflussen kann. Daher ist ein Programm, das das aktuelle Verzeichnis ändert und sofort beendet, unbrauchbar. (Fast nutzlos: Eincd
Programm würde einen Status zurückgeben, der angibt, ob es erfolgreich war.)Wenn Sie in ein Verzeichnis wechseln und dann Befehle als ein anderer Benutzer ausführen möchten, führen Sie eine Shell aus, die dies alles erledigt.
quelle
Ich benutze
sudo su - USERNAME
normalerweise : und tue dann, was du als dieser Benutzer brauchst. Zum Beenden einfach tippenexit
quelle
USERNAME
und die anschließende Ausführung des Befehls unterscheidet sich von der direkten Ausführung des Befehls alsUSERNAME