Jawaban:
cdadalah shell builtin . Anda perlu memohon shell untuk mengeksekusi shell builtins:
sudo -u USER sh -c 'cd /home/USER'
ATAU
sudo -u USER bash -c 'cd /home/USER'
cdbukan perintah eksternal, itu hanya shell builtin, jadi sudotidak bisa menjalankannya. Alasan mengapa cdhanya ada sebagai shell builtin adalah bahwa suatu proses tidak dapat mempengaruhi direktori saat ini dari proses lain; Oleh karena itu program yang mengubah direktori saat ini dan keluar segera tidak berguna. (Hampir tidak berguna: cdprogram akan mengembalikan status yang menunjukkan apakah itu berhasil.)
Jika Anda ingin mengubah ke direktori dan kemudian menjalankan perintah sebagai pengguna lain, jalankan shell yang melakukan semua itu.
sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'
Saya cenderung menggunakan: sudo su - USERNAMEdan kemudian melakukan apa yang Anda butuhkan sebagai pengguna itu. Untuk berhenti ketik sajaexit
USERNAMEdan kemudian mengeksekusi perintah berbeda dengan menjalankan perintah secara langsung sebagaiUSERNAME
cd. OP mungkin inginsudo -i.