Jawaban:
cd
adalah 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'
cd
bukan perintah eksternal, itu hanya shell builtin, jadi sudo
tidak bisa menjalankannya. Alasan mengapa cd
hanya 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: cd
program 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 - USERNAME
dan kemudian melakukan apa yang Anda butuhkan sebagai pengguna itu. Untuk berhenti ketik sajaexit
USERNAME
dan kemudian mengeksekusi perintah berbeda dengan menjalankan perintah secara langsung sebagaiUSERNAME
cd
. OP mungkin inginsudo -i
.