(Ubuntu 15.10 64 位)运行 wine/steam/aapt 时出现类似错误 - 意外换行,预期为“)”

(Ubuntu 15.10 64 位)运行 wine/steam/aapt 时出现类似错误 - 意外换行,预期为“)”

我在运行 Android-Studio 中的 aapt、通过 playonlinux 运行 wine(还没有尝试过普通的 wine)或尝试安装 steam 时遇到了一些类似的错误。也许其他程序也会出现这种情况,但我还没有测试过所有程序。

经过一番谷歌搜索后,我还没有找到可行的解决方案。

以下是 Android-Studio 中 aapt 的一个示例:

AAPT err(Facade for 1508687752): /home/xxx/Android/Sdk/build-tools/23.0.2/aapt: 2: /home/xxx/Android/Sdk/build-tools/23.0.2/aapt: Syntax error: newline unexpected (expecting ")")

wine 和 steam 中的错误类似,总是语法错误,并且期望“)”或“(”是意外的。

我还用脚本测试了它:

#!/bin/bash
echo 'test'
array=(1 2 3 4 5)
echo ${array[*]}

使用 sh 运行时,会出现同样的错误。使用 bash 或“./”运行时,运行正常。

造成该问题的原因是什么?我该如何解决它?

答案1

好吧,很多人不知道这一点,但默认情况下,Ubuntu 链接/bin/shdash,而不是bash。您可以使用以下命令检查这一点:

ls -l /bin/sh

shelldash不支持数组,正如bash解释的那样这里

你可以检查当前打开了哪个 shell:

echo "$SHELL"

话虽如此,预打包的程序遇到这个错误还是很奇怪的。我希望它们#!/bin/bash在需要时已经启动了。

您可以编辑有问题的脚本以将其包含#!/bin/bash在顶部。

如果脚本没有“shebang”行(#!顶部的和等),则当前 shell 是执行的默认 shell 。您可以在出现提示时使用,然后输入密码来./更改登录 shell 。您必须重新登录。chsh/bin/bash

如果这没有帮助,您还可以更改符号链接(这可能不会破坏任何东西,但 YMMV):

sudo rm /bin/sh
sudo ln -s bash /bin/sh

相关内容