У меня был этот сценарий:
spd-say "Hello, don't forget the trash bin."
Таким образом, он напомнил мне о том, что я должен делать, и я переместил его в /usr/local/bin/
, и команда trash
произнесла аргумент, затем я установил Работа crontab , чтобы каждый день напоминать мне о том, что я хотел сделать. Но crontab не работал, и я не мог понять почему (он выполняет другие задачи без нареканий).
Однажды я увидел это сообщение в своем терминале:
You have new mail in /var/mail/root
, в конце которого эта строка заставила меня сделать ошибку:
/bin/sh: 1: trash: not found
Я знаю, что это было глупая вещь, но я сделал:
mv /usr/local/bin/trash /bin/sh
думая, что sh
является каталогом, и я должен переместить сценарий туда, чтобы его выполнить.
Теперь, когда я хочу увидеть man-страницу, система говорит:
«Здравствуйте, не забывайте мусорное ведро».
И вывод из cat sh
:
#!/bin/bash
spd-say "Hello, don't forget the trash bin. "
В любом случае, я могу что-нибудь сделать или мне нужно переустановить операционную систему?
В системах Ubuntu, /bin/sh
символьная ссылка на dash
оболочка по умолчанию:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jul 7 2018 /bin/sh -> dash
Таким образом (принимающий Ваш эмулятор терминала использует оболочку удара и не стал поврежденным Вашей ошибкой) все, которое необходимо сделать, воссоздают ссылку:
sudo ln -sf dash /bin/sh
Нет, Вы не должны переустанавливать свою систему./bin/sh является только softlink к Вашей оболочке. readlink -f /bin/sh /bin/bash
В моем ударе случая. Переместите свой сценарий и сделайте softlink к Вашей любимой оболочке.