나는 Debian 10(9에서 업그레이드)을 실행하고 있으며 최근에 꽤 많은 명령이 실행되지 않는 한 시스템에서 누락된 것 같다는 것을 발견했습니다. sudo
bash는 명령을 찾을 수 없다고 말합니다.
$ reboot
bash: reboot: command not found
로 실행 중인 경우에도 이런 일이 발생합니다 root
. 다음을 포함하여 꽤 많은 유틸리티가 이 접근 방식을 사용합니다.
shutdown
그리고reboot
fdisk
와 같은 많은 파티셔닝 도구gparted
update-grub
그리고grub-install
modprobe
sudo
나는 실수를 했을 경우를 대비해 명령을 실행하는 것을 좋아 sudo !!
하지만, 이 잘못된 메시지로 인해 그 명령이 당시 전체 시스템에서 실제로 실행되고 있는지 계속 헛되이 검색하게 됩니다. .
매뉴얼 페이지가 여전히 존재하며 일반 사용자로 볼 수 있다는 점은 주목할 가치가 있습니다.
only root can do that
with 와 같은 오류가 발생하지 않는 이유는 무엇입니까 mount
? 이 행동이 더 안전한가요? 또, 끄는 방법은 없나요?
답변1
댓글 덕분에 이에 대해 알게 되었고 /sbin
데비안에서는 기본적으로 /usr/sbin
제외되었습니다 . $PATH
나는 다음 줄을 내 코드에 추가하여 이 작업을 수행했습니다 ~/.bashrc
.
PATH=$PATH:/sbin:/usr/sbin
이제 모든 명령이 정상적으로 표시됩니다.
$ update-grub
grub-mkconfig: You must run this as root
답변2
PATH 환경 변수를 확인하셨나요? 이는 일반적으로 누군가 실수로 PATH 변수를 수정하여 실행 가능한 검색 경로가 손상되었을 때 발생합니다.
답변3
(다른 답변에 언급된 바와 같이:) " /sbin/
그리고 /usr/sbin/
이러한 디렉터리의 실행 파일에는 일반적으로 루트 권한이 필요하므로 일반 사용자가 실행할 수 없을 것으로 예상되기 때문에 경로는 의도적으로 PATH 변수에서 제외되는 경우가 많습니다."
전체 sudo 명령을 사용하되 echo
. 그런 다음 실수로 키를 누르는 등 문제가 발생하면 Enter
명령이 화면에 표시되고 실제로 아무 일도 발생하지 않고 명령 프롬프트로 돌아갑니다(단, 명령 대체에 주의하세요). 그런 다음 Up
화살표를 사용하여 돌아가 명령을 있는 그대로 편집 할 수 있습니다 .
또한 일부 명령은 옵션을 제공하므로 명령 자체에 대한 매뉴얼 페이지를 확인하십시오.만 표시이 명령은 무엇을 할 것인가,실제로는 하지 않았다.
예를 들어, 요청한 모든 작업을 수행하는 옵션 (또는:)이 sfdisk
있지만-n
--no-action
장치에 쓰지 않음이므로 실제 수정은 이루어지지 않았습니다.
영구적으로 변경하려면 .bashrc
사용자의 홈 디렉터리에서 파일을 편집하십시오(BASH를 사용하는 경우). 새 사용자에 대해 변경 사항을 영구적으로 적용하려면 에서 이 작업을 수행할 수 있습니다 /etc/skel/
. 기본 동작에 따라 이 디렉토리의 내용은 추가한 새 사용자의 홈 디렉토리에 복사됩니다.
안전 설명서:아래 링크의 튜토리얼에서는 bin/
각 사용자의 홈 디렉토리에 디렉토리를 추가하여 사용자가 자신의 실행 파일을 사용할 수 있도록 권장합니다. 그러나 좋은 보안 방법은 다음과 같습니다.장애를 입히다/home
수정자를 사용하여 noexec
파티션에서 실행 파일을 실행합니다 fstab
. 이렇게 하면 관리자가 승인한 실행 파일만 실행할 수 있습니다. 디렉토리 /usr/local/
트리는 표준(보안) 저장소를 거치지 않는 실행 파일을 추가할 수 있는 공간을 제공하므로 배포에서 제공하는 표준 패키지의 확장을 허용하면서 관리 제어를 유지할 수 있습니다.
다음과 같은 짧은 튜토리얼을 살펴보는 것이 유용할 수 있습니다.https://www.tecmint.com/set-path-variable-linux-permanently/