저는 Linux를 처음 접했고 /bin/sh
그것이 폴더라고 생각했습니다.
내가 해냈어mv path/to/file /bin/sh
이제 더 이상 터미널과 Ubuntu 소프트웨어를 열 수 없습니다. 아직 발견하지 못한 손상된 프로그램이 더 있을 수 있습니다.
오류가 발생합니다.
/bin/sh
너무 많은 심볼릭 링크 레이어가 있는 하위 프로세스를 생성할 수 없습니다.
어떤 제안이 있으십니까?
우분투 20.04를 실행 중입니다.
답변1
/bin/sh
심볼릭 링크이므로 덮어써도 실제로 아무것도 삭제되지 않고 링크가 무효화될 뿐입니다.
/bin/sh
Shebang 헤더에는 모든 유형의 스크립트가 사용되기 때문에 문제가 됩니다 . 이것이 아마도 모든 종류의 무작위적인 것들이 실패하는 이유일 것입니다.
루트이거나 sudo: 1을 통해 로그인해야 합니다.
cd /bin
rm sh
ln -s dash sh
발견한 메커니즘에 따라 절대 경로를 사용하여 이 작업을 수행하는 것이 더 쉬울 수 있으므로 의미가 충분히 명확하기를 바랍니다. (원래 링크에서는 절대 경로를 사용하지 않았을 수도 있지만 이는 중요하지 않습니다.) 익숙하지 않은 경우(기호) 파일 링크바라보다 man ln
.
이렇게 하면 터미널을 다시 정상적으로 사용할 수 있습니다. 작동하는 경우 이전에 실패한 스크립트로 인해 지속적인 결과가 발생할 경우 다시 시작해야 할 수도 있습니다.
- 이는 Debian/Ubuntu 및 해당 제품군에만 해당됩니다. 다른 배포판에는
dash
셸이 포함되어 있지 않을 수 있지만 그렇지bash
않은dash
경우 ./bin
bash
답변2
이러한 유형의 문제에 대한 한 가지 (일반적인) 해결책은 손상된 파일이 속한 패키지를 찾은 다음 해당 패키지를 다시 설치하는 것입니다. 이를 수행하는 방법은 배포판의 패키지 관리자에 따라 다릅니다. RPM 기반 시스템에서는 다음과 같습니다.
rpm -qf /bin/sh # Package is bash-5.1.0-2.fc34.x86_64 here
yum -y reinstall bash