Проблема с запуском cd с sudo от имени другого пользователя

Проблема с запуском cd с sudo от имени другого пользователя

Я хочу запустить команду на оболочке от имени другого пользователя. Команда выглядит следующим образом:

sudo -u USER cd /home/USER

я получил

sudo: cd: command not found

Каков правильный синтаксис команды для передачи в sudo?

решение1

cdэтовстроенная оболочка. Вам необходимо вызвать оболочку для выполнения встроенных функций оболочки:

sudo -u USER sh -c 'cd /home/USER'

ИЛИ

sudo -u USER bash -c 'cd /home/USER'

решение2

cdне является внешней командой, это всего лишь встроенная команда оболочки, поэтому sudoне может ее выполнить. Причина, по которой cdона существует только как встроенная команда оболочки, заключается в том, что процесс не может повлиять на текущий каталог другого процесса; поэтому программа, которая изменяет текущий каталог и немедленно завершает работу, бесполезна. (Почти бесполезна: программа cdвернет статус, указывающий, была ли она успешной.)

Если вы хотите перейти в каталог, а затем выполнить команды от имени другого пользователя, запустите оболочку, которая все это сделает.

sudo -u SOMEUSER sh -c 'cd /path/to/directory && dosomething'

решение3

Я обычно использую: sudo su - USERNAMEи затем делайте то, что вам нужно от имени этого пользователя. Чтобы выйти, просто введитеexit

Связанный контент