2021년 12월 24일 업데이트됨
다른 이유로 재부팅이 발생하는 원인을 찾으려면 허용된 답변에서 코드를 찾아서 grep해야 했지만 근본 문제를 찾으면 이 게시물을 업데이트하겠습니다 Ctrl.C
그러나 문제를 해결하기 위해 허용된 답변의 재정의된 sudo 코드를 사용했으며 충돌 없이 sudo를 수행할 수 있습니다!
따라서 소스 문제를 찾기 전에 문제가 발생할 수 있는 다른 사람을 위해 제가 수행한 작업은 다음과 같습니다.
.bashrc
내 .bashrc 파일 하단
# https://unix.stackexchange.com/a/683619/344030
if [ -f ~/.sudo-fix ]; then
source ~/.sudo-fix
else
echo '
답변1
그래서 우리는확인되었습니다왜 sudo
제대로 작동하지 않습니까? 이것이 하려는 것은 sudo
인수 없이 솔로를 재정의하는 것 같습니다. 즉, 입력한 마지막 명령을 sudo
접두사로 반복한다는 의미입니다.
현명한 아이디어이지만 구현이 좋지 않음 - 인용되지 않은 콘텐츠$@
~ 해야 하다큰따옴표로 묶으면 제대로 작동하며 재귀를 방지하려면 명령 sudo
을 함수 자체가 아닌 함수 내부에서 사용해야 합니다.
# Redefine sudo to reuse the last command if no args
sudo() {
if [ $# -gt 0 ]
then command sudo "$@"
else command sudo "${BASH:-bash}" -c "$(history -p '!!')"
fi
}
이제 그것이 정의된 위치를 찾는 것이 더 어려워질 것입니다. 이 명령은 좋은 시작점이 될 것입니다(제가 가정하고 있는 재귀 명령과 유사 grep
하지만 함수 이름과 함수 이름 사이의 공백을 ()
선택 사항으로 허용하고 관련 없는 디렉터리를 제외합니다).
command sudo find / \( -path '/dev' -o -path '/proc' -o -path '/run' -o -path 'sys' \) -prune -o -type f -exec grep -l 'sudo *()' {} +
일단 찾으면 버그 보고서를 제출하는 것이 좋습니다. (그것이 당신에게 효과가 있다고 가정하면, 수정 사항으로 제가 제공한 코드를 제안해 주시기 바랍니다.)