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

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

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

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

[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 bashbash 의 새 인스턴스가 실행됩니다 user root environment. 그러나 환경을 호출하면 sudo bash -c "whoami; which bundle"사용자는 환경을 계속 사용할 수 있습니다. 이 작업을 원하지 않으면 sudo옵션을 통해 마지막 호출을 수정할 수 있습니다.-i

-나,- 로그인

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

관련 정보