Saya punya skrip ini:
spd-say "Hello, don't forget the trash bin."
Jadi itu mengingatkan saya pada apa yang seharusnya saya lakukan, dan saya memindahkannya ke /usr/local/bin/
dan perintah trash
mengucapkan argumen, kemudian saya mengatur pekerjaan crontab , untuk membuatnya mengingatkan saya setiap hari apa yang ingin saya lakukan. Tetapi crontab tidak bekerja dan saya tidak mengerti mengapa (Ini melakukan pekerjaan lain dengan sempurna).
Setelah saya melihat pesan ini di terminal saya:
You have new mail in /var/mail/root
pada akhirnya baris ini membuat saya melakukan kesalahan buruk:
/bin/sh: 1: trash: not found
Saya tahu itu hal yang konyol untuk dilakukan tetapi saya lakukan:
mv /usr/local/bin/trash /bin/sh
berpikir itu sh
adalah direktori dan saya harus memindahkan skrip di sana untuk dieksekusi.
Sekarang, ketika saya ingin melihat halaman manual sistem mengatakan:
"Halo, jangan lupa tempat sampah."
Dan output dari cat sh
adalah:
#!/bin/bash
spd-say "Hello, don't forget the trash bin. "
Lagi pula, dapatkah saya melakukan sesuatu atau saya harus menginstal ulang sistem operasi saya?
man
docs adalah sampah (atau sulit dipahami)Jawaban:
Dalam sistem Ubuntu,
/bin/sh
adalah tautan simbolis kedash
shell secara default:Jadi (anggap emulator terminal Anda menggunakan bash shell, dan tidak rusak karena kesalahan Anda) yang perlu Anda lakukan adalah membuat kembali tautan:
sumber
mv /usr/local/bin/trash /bin/sh
,sh
: Anda tidak bisa hidup dengan kegagalan Anda sendiri, di mana itu membawa Anda? Kembali padaku.Tidak, Anda tidak perlu menginstal ulang sistem Anda. / bin / sh hanyalah softlink ke shell Anda.
readlink -f /bin/sh /bin/bash
Dalam kasus saya bash. Pindahkan skrip Anda dan buat softlink ke shell favorit Anda.sumber
sudo dpkg-reconfigure dash
, per Bagaimana Saya Dapat Membuat / bin / sh menunjuk ke / bin / bash? . Perhatikan juga shell sistem bukan shell interaktif default.