错误修改了`/bin/sh'

14 scripts sh

我有这个脚本:

spd-say "Hello, don't forget the trash bin."
Run Code Online (Sandbox Code Playgroud)

所以它让我想起了我应该做什么,我把它移到/usr/local/bin/了,命令trash宣布了这个论点,然后我设置了一个crontab 工作,让它每天提醒我我想做什么。但是crontab不起作用,我不明白为什么(它可以完美地完成其他工作)。

一旦我在终端中看到此消息:

You have new mail in /var/mail/root
Run Code Online (Sandbox Code Playgroud)

最后这一行让我犯了一个严重的错误:

/bin/sh: 1: trash: not found
Run Code Online (Sandbox Code Playgroud)

我知道这样做很愚蠢,但我做到了:

mv /usr/local/bin/trash /bin/sh
Run Code Online (Sandbox Code Playgroud)

认为这sh是一个目录,我应该将脚本移到那里以便执行。

现在,当我想查看手册页时,系统会说:

“你好,别忘了垃圾桶。”

的输出cat sh是:

#!/bin/bash
spd-say "Hello, don't forget the trash bin. "
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以做任何事情还是必须重新安装操作系统?

ste*_*ver 31

在 Ubuntu 系统中,默认/bin/shdashshell的符号链接:

$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Jul  7  2018 /bin/sh -> dash
Run Code Online (Sandbox Code Playgroud)

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

sudo ln -sf dash /bin/sh
Run Code Online (Sandbox Code Playgroud)

  • ***OP:*** `mv /usr/local/bin/trash /bin/sh`, ***`sh`***: 你不能忍受自己的失败,这给你带来了什么?回到我的身边。 (14认同)
  • @vikarjramun 听起来像是杰作,但我不太明白...... (4认同)
  • @LogicalBranch 你怎么对那部杰作只有 1 个赞? (2认同)

nob*_*ody 7

不,您不必重新安装系统。/bin/sh 只是到你的 shell 的软链接。readlink -f /bin/sh /bin/bash就我而言,bash。移动您的脚本并创建一个指向您最喜欢的 shell 的软链接。

  • /bin/sh 实际上应该指向 /bin/dash。如果要更改系统外壳,请使用 `sudo dpkg-reconfigure dash`,根据 [How Can I Make /bin/sh point to /bin/bash?](https://askubuntu.com/q/1064773/301745 )。另请注意,系统外壳不是默认的交互式外壳。 (10认同)