Ich hatte dieses Skript:
spd-say "Hello, don't forget the trash bin."
Also erinnerte es mich an das, was ich tun sollte, und ich verschob es zu /usr/local/bin/
und der Befehl trash
sprach das Argument aus. Dann stellte ich einen Crontab-Job ein , damit es mich jeden Tag daran erinnerte, was ich tun wollte. Aber die Crontab funktionierte nicht und ich konnte nicht verstehen warum (es erledigt andere Jobs einwandfrei).
Einmal sah ich diese Nachricht in meinem Terminal:
You have new mail in /var/mail/root
Am Ende dieser Zeile habe ich einen schweren Fehler gemacht:
/bin/sh: 1: trash: not found
Ich weiß, dass es eine dumme Sache war, aber ich tat es:
mv /usr/local/bin/trash /bin/sh
denke, das sh
ist ein Verzeichnis und ich sollte das Skript dorthin verschieben, um ausgeführt zu werden.
Wenn ich jetzt eine Manpage sehen möchte, sagt das System:
"Hallo, vergiss den Mülleimer nicht."
Und die Ausgabe von cat sh
ist:
#!/bin/bash
spd-say "Hello, don't forget the trash bin. "
Wie auch immer, kann ich etwas tun oder muss ich mein Betriebssystem neu installieren?
man
sind docs Müll (oder schwer zu verstehen)Antworten:
In Ubuntu-Systemen
/bin/sh
istdash
standardmäßig ein symbolischer Link zur Shell:Also (vorausgesetzt, Ihr Terminal-Emulator verwendet die Bash-Shell und ist nicht durch Ihren Fehler kaputt gegangen), müssen Sie nur den Link neu erstellen:
quelle
mv /usr/local/bin/trash /bin/sh
,sh
: Du konntest nicht mit deinem eigenen Versagen leben, wohin hat dich das gebracht? Zurück zu mir.Nein, Sie müssen Ihr System nicht neu installieren. / bin / sh ist nur ein Softlink zu Ihrer Shell.
readlink -f /bin/sh /bin/bash
In meinem Fall bash. Verschieben Sie Ihr Skript und erstellen Sie einen Softlink zu Ihrer Lieblingsshell.quelle
sudo dpkg-reconfigure dash
unter Wie kann ich / bin / sh auf / bin / bash verweisen? . Beachten Sie auch, dass die System-Shell nicht die standardmäßige interaktive Shell ist.