web-dev-qa-db-ja.com

誤って変更された `/ bin / sh '

私はこのスクリプトを持っていました:

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はディレクトリであり、実行するにはスクリプトをそこに移動する必要があると考えています。

今、私がマニュアルページを見たいとき、システムは言う:

「こんにちは、ゴミ箱をお忘れなく。」

cat shの出力は次のとおりです。

#!/bin/bash
spd-say "Hello, don't forget the trash bin. "

とにかく、私は何でもできますか、またはオペレーティングシステムを再インストールする必要がありますか?

16
Codito ergo sum

Ubuntuシステムでは、/bin/shは、デフォルトでdashシェルへのシンボリックリンクです。

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jul  7  2018 /bin/sh -> dash

したがって、(ターミナルエミュレータがbashシェルを使用していて、間違いによって壊れていない場合)、リンクを再作成するだけです。

Sudo ln -sf dash /bin/sh
30
steeldriver

いいえ、システムを再インストールする必要はありません。/bin/shはシェルへのソフトリンクにすぎません。 readlink -f /bin/sh /bin/bash私の場合はbashです。スクリプトを移動して、お気に入りのシェルへのソフトリンクを作成します。

7
nobody