Распаковал игру, запустил sh start.sh
результаты in:
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
start.sh:
#!/bin/bash
GAMEDIR=$(cd "${0%/*}" && echo $PWD)
cd "$GAMEDIR"
export LC_ALL=C
exec ./hoi4 "$@"
Ожидалось, что вопрос будет принят как вопрос, связанный с ошибкой.
Определенная ошибка, которую Вы получаете, из-за способа, которым Вы пытаетесь выполнить сценарий (и довольно странный способ, которым сценарий записан).
Когда скрипт запущен, позиционный параметр 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