Miałem ten skrypt:
spd-say "Hello, don't forget the trash bin."
Przypomniało mi to, co powinienem zrobić, i przeniosłem to, /usr/local/bin/
a polecenie trash
wypowiedziało argument, a potem ustawiłem zadanie crontab , aby codziennie przypominało mi, co chcę zrobić. Ale crontab nie działał i nie mogłem zrozumieć, dlaczego (wykonuje inne prace bezbłędnie).
Gdy zobaczyłem ten komunikat w moim terminalu:
You have new mail in /var/mail/root
na końcu którego ten wiersz popełnił poważny błąd:
/bin/sh: 1: trash: not found
Wiem, że to było głupie, ale zrobiłem:
mv /usr/local/bin/trash /bin/sh
myśląc, że sh
jest to katalog i powinienem tam przenieść skrypt, aby go wykonać.
Teraz, gdy chcę zobaczyć stronę podręcznika system mówi:
„Witaj, nie zapomnij o koszu na śmieci”.
A wynikiem cat sh
jest:
#!/bin/bash
spd-say "Hello, don't forget the trash bin. "
W każdym razie, czy mogę coś zrobić lub muszę ponownie zainstalować system operacyjny?
man
Odpowiedzi:
W systemach Ubuntu domyślnie
/bin/sh
jest dowiązaniem symbolicznym dodash
powłoki:Tak więc (zakładając, że emulator terminala używa powłoki bash i nie został uszkodzony przez swój błąd), wystarczy odtworzyć link:
źródło
mv /usr/local/bin/trash /bin/sh
,sh
: Nie mogłeś żyć z własną porażką, dokąd to cię zaprowadziło? Wróć do mnie.Nie, nie musisz ponownie instalować systemu. / bin / sh to tylko softlink do twojej powłoki.
readlink -f /bin/sh /bin/bash
W moim przypadku bash. Przenieś skrypt i utwórz softlink do swojej ulubionej powłoki.źródło
sudo dpkg-reconfigure dash
, jak zrobić / bin / sh point na / bin / bash? . Pamiętaj również, że powłoka systemowa nie jest domyślną powłoką interaktywną.