여러 명령을 읽고 있는데 그 중 일부는 권한이 있고 일부는 설치되거나 설치되지 않을 수 있습니다. 내 시스템(젠투)은 프로그램이 시스템에 있을 때 가끔 명령을 찾을 수 없다고 응답합니다. Emergency와 같은 동작을 어떻게 일치시키나요?
내가 원하는 행동의 예:
$ emerge -av mypackage
This action requires superuser access...
내가 현재 가지고 있는 것:
$ lspci
bash: lspci: command not found
$ sudo lspci
00:00.0 Host bridge: ...
나는 심지어 "권한 거부됨" 메시지를 선호하므로 sudo를 시도해야 한다는 것을 알고 있습니다. 물론 루트로 실행하고 싶지는 않습니다.
답변1
포함된 디렉터리가 lspci
PATH에 없을 수도 있습니다.
위치를 사용하여 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
}