安装 tar.xz 游戏 (libGLU.so)

安装 tar.xz 游戏 (libGLU.so)

解压游戏,运行sh start.sh结果为:

start.sh: 2: cd: can't cd to start.sh
./hoi4: error while loading shared libraries: libGLU.so.1: cannot open shared object file: No such file or directory

启动文件:

#!/bin/bash
GAMEDIR=$(cd "${0%/*}" && echo $PWD)
cd "$GAMEDIR"
export LC_ALL=C
exec ./hoi4 "$@" 

预期该问题将被接受为特定错误问题。

答案1

您收到的特定错误是由于您尝试执行脚本的方式(以及脚本的编写方式相当奇怪)造成的。

当脚本运行时,位置参数0包含调用脚本的名称,例如path/to/start.sh- 或者简单地./start.sh说,如果它是从当前目录调用的。参数扩展语法从匹配${0%/*}中删除最短的后缀(分别)或只是,然后脚本尝试更改到此目录 - 换句话说,到父目录$0/*path/to.start.sh

但是,当您使用sh start.sh(以及使用sh而不是预期的执行脚本/bin/bash) 时,$0等于start.sh。由于没有匹配的/,因此${0%/*}不会从 中删除任何内容$0,导致脚本尝试执行命令cd start.sh,该命令显然会失败,因为start.sh它是文件而不是目录。

解决方案是按照作者预期的方式执行脚本 - 即确保它是可执行的

chmod +x start.sh

然后直接执行,例如

./start.sh

相关内容