권한 있는 명령이 실패했지만 응답하도록 허용하는 방법은 무엇입니까?

권한 있는 명령이 실패했지만 응답하도록 허용하는 방법은 무엇입니까?

여러 명령을 읽고 있는데 그 중 일부는 권한이 있고 일부는 설치되거나 설치되지 않을 수 있습니다. 내 시스템(젠투)은 프로그램이 시스템에 있을 때 가끔 명령을 찾을 수 없다고 응답합니다. Emergency와 같은 동작을 어떻게 일치시키나요?

내가 원하는 행동의 예:

$ emerge -av mypackage
This action requires superuser access...

내가 현재 가지고 있는 것:

$ lspci
bash: lspci: command not found
$ sudo lspci
00:00.0 Host bridge: ...

나는 심지어 "권한 거부됨" 메시지를 선호하므로 sudo를 시도해야 한다는 것을 알고 있습니다. 물론 루트로 실행하고 싶지는 않습니다.

답변1

포함된 디렉터리가 lspciPATH에 없을 수도 있습니다.

위치를 사용하여 sudo -i which lspci경로에 디렉터리를 추가할 수 있습니다.

가능한 위치는 /sbin또는/usr/sbin

현재 PATH에 추가하려면 다음을 실행할 수 있습니다(Bourne 기반 셸에서).export PATH="$PATH:/usr/sbin:/sbin"

.bashrc변경 사항을 영구적으로 적용하려면 또는 에 내보내기 명령을 추가하세요 ( 셸로 .bash_profile사용한다고 가정 ).bash

답변2

lspci일반 사용자의 명령어 검색 경로에 없기 때문에 찾을 수 없습니다. 루트가 아닌 사용자가 거의 또는 전혀 효과적으로 사용할 수 없는 명령은 /sbin루트의 명령 검색 경로에 있지만 다른 사용자의 명령 검색 경로에는 없는 디렉터리에 배치됩니다 ./usr/sbin/usr/local/sbin

다음과 같은 함수를 정의하여 명령을 찾을 수 없을 때 bash가 수행하는 작업을 구성할 수 있습니다.command_not_found_handle. 따라서 다음과 같은 내용을 넣을 수 있습니다 .bashrc.

command_not_found_handle () {
  if [[ -x "/sbin/$1" || -x "/usr/sbin/$1" || -x "/usr/local/sbin/$1" ]]; then
    echo 1>&2 "bash: $1: command not found, but can be executed as root"
  fi
  return 127
}

관련 정보