多系统脚本无法运行!“语法错误:意外重定向”2 天前还能用吗?

多系统脚本无法运行!“语法错误:意外重定向”2 天前还能用吗?

这是我的第一个问题。

我一直使用 Multisystem,并在 Kubuntu 和 Ubuntu 上都安装了它,使用过程中没有出现任何问题。我清空了硬盘,尝试了一些新的操作系统,我现在使用的是与加载 USB 时完全相同的操作系统 (Ubuntu 12.05),现在出现了这个荒谬的语法错误。我知道脚本是正确的,我按照与到达这一点时完全相同的步骤操作,却得到了不同的结果 ?!?! 我对此非常困惑。

我不知道如何开始解决这个问题。我现在在安装了多系统的 Kubuntu 上也遇到了同样的语法错误。

我运行“sh install-depot-multisystem.sh”,结果出现“语法错误:意外重定向”,这在 2 天前确实有效。唯一改变的是我的脸上又长出了一些胡须,而且我的头因为这个问题撞墙而疼痛。

操作系统完全一样,脚本也一样;但现在无法安装。我很困惑,真心希望有人能帮帮我。

附加

补充一点

https://lists.ubuntu.com/archives/ub...er/000264.html

我需要在脚本上执行 chmod 777,但在 Kubuntu 上仍然出现语法错误...但确实安装成功。我会将此标记为已解决!

无论如何,谢谢,我会努力提高我的 Linux 技能。

答案1

即使存在语法错误,该脚本仍然有效,因此这个问题似乎可以归结为如何运行脚本

作为可执行文件运行

运行当前目录中的脚本无需明确调用 shell,则必须在其名称前面加上./。它还必须是可执行的。

chmod u+x install-depot-multisystem.sh
./install-depot-multisystem.sh

这仅在脚本以以下内容开头时才有效:哈希班线指定应该运行它的 shell。

如果您运行了chmod 777该脚本,并且这有帮助,那么它之所以有帮助,几乎可以肯定是因为它赋予了您(作为脚本的所有者)对该脚本的执行权限。您还授予了自己和所有其他用户的读写权限,以及所有其他用户的执行权限。这是不必要的,可能是一个严重的安全问题。chmod u+x同样好,而且更安全。

调用 Shell

或者,您可以通过明确调用 shell 来运行脚本,就像您最初尝试的那样:

sh install-depot-multisystem.sh

该脚本有一个.sh扩展名,因此应该可以使用 运行sh。但是,如果脚本作者命名不当,并且它确实是一个bash脚本,您可以尝试使用 运行bash(如盖尔哈建议):

bash install-depot-multisystem.sh

在当前 Shell 中运行

包含此方法只是为了完整性——除非您编写了脚本并且知道它将正常工作,或者脚本附带的说明要求以这种方式运行,否则您应该使用前两种方法之一。许多脚本只有在有自己的 shell 来运行时才会正常工作(这可以通过上述两种方法之一来实现)。

话虽如此,您可以尝试在当前 shell 中,在当前 shell 的环境中,使用以下任一命令运行该脚本:

. install-depot-multisystem.sh
source install-depot-multisystem.sh

运行为root

如果脚本正在安装系统范围的程序或服务,则可能需要以 root 身份运行。除非您知道需要这样做,否则不要以 root 身份运行脚本(或任何东西)。

要以 root 身份运行它,请将其放在sudo运行它的命令前面。以下三个命令中的任何一个都可以使用(尽管第一个仍然需要执行权限):

sudo ./install-depot-multisystem.sh
sudo sh install-depot-multisystem.sh
sudo bash install-depot-multisystem.sh

答案2

这不是 sh 而是 bash 不要使用“sh install-depot-multisystem.sh” 只需使用:install-depot-multisystem.sh

相关内容