Linux sudo 명령 중 command not found 가 나타 난 이유

1910 단어
cd, source, type 등의 명령 을 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 가 있 는 디 렉 터 리 를 바 꿀 수 없습니다.
  • Linux 에서 명령 을 실행 하기 전에 sudo 를 추가 할 때 command not found 가 나타 나 는 이유
  • 좋은 웹페이지 즐겨찾기