데비안 - 'command' 명령을 찾을 수 없습니다

데비안 - 'command' 명령을 찾을 수 없습니다

내 쉘 bash에서 오류가 발생했는데 bash : ... : command not found오류 수정을 시작하는 방법을 모르겠습니다. 그리고 "bash" "Debian" 외에 어떤 마녀 태그를 선택해야 할지 모르겠습니다.

저는 루트이고 이 두 프로그램이 설치되어 있습니다. 운영 체제는 Debian Buster이며 새로 설치되었습니다. 설치하는 동안 Tasksel 구성 단계에서 모든 옵션을 선택 취소했습니다. 나는 그것이 내 껍질과 더 관련이 있다고 생각합니다. 나중에 저는 Awesome tiling windows를 설치하곤 했습니다.

이것은 내 경로의 결과입니다. root@machine:~# echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

다음은 두 가지 예입니다. 먼저 프로그램을 실행해 봅니다. 둘째, 프로그램이 설치되어 있는지 확인합니다.

root@machine:~# modprobe --verbose
bash: modprobe: command not found

root@adrien:~# apt-get install kmod 
Reading package lists... 
Done Building dependency tree
Reading state information... 
Done kmod is already the newest version (26-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

root@machine:~# openvpn 
bash: openvpn: command not found

root@adrien:~# apt-get install openvpn 
Reading package lists... Done Building dependency tree
Reading state information... 
Done openvpn is already the newest version (2.4.7-1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

답변1

$PATH귀하의 컴퓨터에 이러한 프로그램이 있는지 확인하십시오 .

$ echo $PATH

시스템 검색 경로가 무엇인지 표시해야 합니다. 어떤 비교

$ dpkg-query -L <package_name>

당신에게 말할 것입니다.

$ command -v program

프로그램의 전체/절대 경로를 알려줍니다.

이 방법으로 찾을 수 없으면 다음을 시도해 보세요.

find /sbin modprobe
find /usr/sbin modprobe

Modprobe는 상주 /sbin하거나 위치할 수 있으며 /usr/sbin에 대한 심볼릭 링크입니다 /bin/kmod. modprobe가 있는 디렉터리에 대한 경로가 없으면 전체 경로(예: )를 제공하지 않으면 해당 경로를 사용할 수 없습니다 $ /sbin/modprobe.

결과를 보내주시면 $ set | grep PATH무엇이 잘못되었는지 확인할 수 있습니다.

출력에 and PATH가 없다고 나타나 므로 이를 테스트하려면 먼저 다음 을 사용하십시오./sbin/usr/sbin$HOME/.bashrc

$ export PATH=$PATH:/sbin:/usr/sbin

그리고 그것이 작동하는지 확인하십시오. 그렇다면 추가 $HOME/.bashrc하고 모든 사용자가 사용할 수 있도록 하려면 /etc/profile@GAD3R이 제안한 곳에 추가하세요.

추신. $명령 프롬프트입니다. 콘솔에 넣지 않으면 해당 명령이 셸에서 사용된다는 것을 나타냅니다. 일반적으로 일반 사용자의 경우 $쉘 프롬프트로 사용되며, 이는 루트뿐만 아니라 일반적인 문제일 수 있으므로 를 사용했습니다 #. 귀하의 경우에는 $ "become" # 그러나 이미 로그인되어 있기 때문입니다. 루트로는 아무 것도 변경되지 않습니다.root$root

답변2

데비안 10에서는 데비안이 su이 명령의 다른 포크("Buster")로 전환했습니다. 이전 버전의 Debian과 달리 일반을 사용하여 루트가 되면 더 이상 시스템에 /sbin/usr/sbin을 자동으로 추가하지 않습니다./usr/local/sbin$PATHsu

이는 많은 사람들을 놀라게 했습니다.

su -루트로 전환할 때 환경의 명시적인 전체 재초기화를 사용할 수 있습니다 . 이렇게 하면 .../sbin디렉터리가 $PATH.

$PATH또는 루트가 되면 자동으로 디렉터리를 추가할 수 있습니다.GAD3R의 답변에서 제안한대로.


또한 다음 명령을 사용하여 컴퓨터를 다시 시작할 수 있다는 것도 알았습니다.

root@machine:~# 다시 시작

바꾸다.

root@machine:~# systemctl 재시작

(참고: 질문 게시물당 하나의 질문만 하는 것이 Stack Exchange의 관례입니다. 이와 같은 질문이 여러 개 있으면 동일한 문제를 가진 다른 사람들이 적용 가능한 답변을 찾기가 더 어려워집니다.)

이는 오랜 Linux/Unix 관리자의 근육 기억 속에 깊이 내장되어 있는 고전적인 SysV 스타일의 종료/다시 시작 명령을 계속 사용할 수 있게 해주는 호환성 래퍼입니다.

답변3

실행 파일의 위치를 ​​확인할 수 있습니다 $ which modprobe.$ which openvpn

명령 su

# /usr/sbin/modprobe
# /sbin/openvpn

그것으로 su -그것은된다

# modprobe
# openvpn

즉, su -완전한 루트 권한/루트의 PATH만 제공됩니다. 일부 /sbin/명령에는 필요합니다 /usr/sbin/: Debian 10.

답변4

다음과 같이 편집하십시오 /etc/profile(처음 6줄).

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

그런 다음 시스템을 다시 시작하십시오.

관련 정보