다른 사용자 대신 쉘에서 명령을 실행하고 싶습니다. 명령은 다음과 같습니다.
sudo -u USER cd /home/USER
나는 얻다
sudo: cd: command not found
명령이 sudo에 전달하는 올바른 구문은 무엇입니까?
답변
cd
A는 쉘 내부 명령 . 쉘 내장을 실행하려면 쉘을 호출해야합니다.
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