![권한 있는 명령이 실패했지만 응답하도록 허용하는 방법은 무엇입니까?](https://linux55.com/image/47566/%EA%B6%8C%ED%95%9C%20%EC%9E%88%EB%8A%94%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%8B%A4%ED%8C%A8%ED%96%88%EC%A7%80%EB%A7%8C%20%EC%9D%91%EB%8B%B5%ED%95%98%EB%8F%84%EB%A1%9D%20%ED%97%88%EC%9A%A9%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
여러 명령을 읽고 있는데 그 중 일부는 권한이 있고 일부는 설치되거나 설치되지 않을 수 있습니다. 내 시스템(젠투)은 프로그램이 시스템에 있을 때 가끔 명령을 찾을 수 없다고 응답합니다. 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
}