Ответы:
cdявляется встроенной в командный интерпретатор . Вам необходимо вызвать оболочку для выполнения встроенных команд оболочки:
sudo -u USER sh -c 'cd /home/USER'
ИЛИ
sudo -u USER bash -c 'cd /home/USER'
cdэто не внешняя команда, это только встроенная оболочка, поэтому она sudoне может быть выполнена. Причина, по которой cdсуществует только встроенная оболочка, состоит в том, что процесс не может влиять на текущий каталог другого процесса; поэтому программа, которая изменяет текущий каталог и немедленно выходит из него, бесполезна. (Практически бесполезно: cdпрограмма возвращает статус, который указывает, был ли он успешным.)
Если вы хотите перейти в каталог, а затем запускать команды от имени другого пользователя, запустите оболочку, которая делает все это.
sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'
Я склонен использовать: sudo su - USERNAMEа затем делать то, что вам нужно, как этот пользователь. Чтобы выйти просто введитеexit
USERNAMEзатем выполнение команды отличается от непосредственного запуска команды какUSERNAME
cd. ОП наверное хочетsudo -i.