다른 사용자를 대신하여 셸에서 명령을 실행하고 싶습니다. 명령은 다음과 같습니다.
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