sudo bash로 실행할 때 명령을 찾을 수 없습니다

sudo bash로 실행할 때 명령을 찾을 수 없습니다

내 컴퓨터에 SSH로 접속한 다음 일부 명령을 실행하려면 sudo bash먼저 SSH를 실행해야 합니다.

대화형 터미널 세션에서 다음을 수행하면:

[vagrant@33 ~]$ sudo bash
[root@33 vagrant]# which bundle
/opt/upnxt/rbenv-0.4.0-7/shims/bundle

일이 작동합니다. 하지만 이 작업을 한 줄로 수행해야 한다면 다음과 같이 하세요.

[vagrant@33 ~]$ sudo bash -c "whoami; which bundle"
root
which: no bundle in (/sbin:/bin:/usr/sbin:/usr/bin)

일이 작동을 멈춥니다. 왜 이런 일이 발생하며 첫 번째 시나리오처럼 실행하려면 두 번째 시나리오에 대해 또 무엇을 해야 합니까?

답변1

sudo bash전화 하면 user root environment. 그러나 호출하면 sudo bash -c "whoami; which bundle"환경은 사용자와 동일하게 유지됩니다. 그렇게 할 의도가 없다면 sudo옵션 으로 마지막 호출을 수정할 수 있습니다.-i

-나,--로그인

대상 사용자의 비밀번호 데이터베이스 항목에 지정된 쉘을 로그인 쉘로 실행하십시오. 이는 다음과 같은 로그인별 리소스 파일을 의미합니다..프로필또는.로그인쉘에서 읽혀집니다. 명령이 지정되면 쉘의 명령을 통해 실행되도록 쉘로 전달됩니다.-씨옵션. 명령이 지정되지 않으면 대화형 쉘이 실행됩니다. sudo쉘을 실행하기 전에 해당 사용자의 홈 디렉토리로 변경을 시도합니다. 이 명령은 사용자가 로그인할 때 받는 환경과 유사한 환경에서 실행됩니다.명령 환경섹션의sudoers(5) 매뉴얼은 sudoers 정책이 사용 중일 때 -i 옵션이 명령이 실행되는 환경에 어떤 영향을 미치는지 문서화합니다.

관련 정보