Linux sudo 명령 중 command not found 가 나타 난 이유
$ sudo cd ~
sudo: cd: command not found
리 눅 스 명령 을 실행 할 때 그 앞 에 sudo 를 추가 하면 루트 권한 으로 실행 한 다 는 것 을 알 고 있 습 니 다.그러나 이것 은 리 눅 스 내장 시스템 명령 만 이 이러한 형식 으로 실행 할 수 있 고 셸 내장 명령 이나 다른 사용자 정의 명령, 별명 등에 대해 서 는 sudo 로 루트 권한 을 사용 할 수 없다 는 전제 가 있다.왜 일 까요?sudo 의 배후 에 숨겨 진 과정 을 자세히 말 해 봐 야 알 수 있 습 니 다.
여기에 먼저 한 마디 삽입 합 니 다.
하나의 명령 이 Linux 내장 시스템 명령 인지 셸 내장 명령 인지 판단 근거 로 type 명령 을 통 해 판단 할 수 있 습 니 다.
$ type cd
cd is a shell builtin
$ man cd
No manual entry for cd
$ sudo cd ~
sudo: cd: command not found
$ type cp
cp is /bin/cp
$ sudo cp
Linux 에서 sudo 로 명령 을 실행 할 때 원래 프로 세 스 (parent process) 를 바탕 으로 fork 에서 키 프로 세 스 (child process) 를 실행 하기 때 문 입 니 다. 이 하위 프로 세 스 는 루트 권한 으로 실 행 됩 니 다.그리고 하위 프로 세 스에 서 sudo 뒤에서 따 르 는 명령 을 수행 합 니 다.
하위 프로 세 스에 서 부모 프로 세 스 와 관련 된 명령 을 호출 할 수 없 기 때문에 시스템 내 장 된 명령 이 아 닌 경우 거부 합 니 다.이것 이 바로 command not found 의 힌트 입 니 다.구체 적 으로 말 하면 우리 가 집행 할 때:
$ sudo cd ~
이 셸 프로 세 스에 서 (PP 라 고 부 르 며, parent process 를 표시 합 니 다) fork 에서 키 프로 세 스 (CP 라 고 부 르 며, child process 를 표시 합 니 다) 를 내 면 CP 에서 PP 가 있 는 디 렉 터 리 를 바 꿀 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.