错误修改了“/bin/sh”

错误修改了“/bin/sh”

我有这个脚本:

spd-say "Hello, don't forget the trash bin."

所以它提醒我应该做什么,我把它移动到/usr/local/bin/命令trash宣告参数,然后我设置一个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. "

无论如何,我能做什么吗,或者我必须重新安装我的操作系统?

答案1

在 Ubuntu 系统中,默认/bin/sh是到 shell 的符号链接:dash

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

因此(假设您的终端仿真器使用 bash shell,并且没有因您的错误而被破坏)您需要做的就是重新创建链接:

sudo ln -sf dash /bin/sh

答案2

不,您不必重新安装系统。/bin/sh 只是您 shell 的软链接。readlink -f /bin/sh /bin/bash在我的情况下是 bash。移动您的脚本并创建指向您最喜欢的 shell 的软链接。

相关内容