Установка игры tar.xz (libGLU.so) [закрыто]

Распаковал игру, запустил 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
задан 13 June 2016 в 18:15

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
1
ответ дан 13 June 2016 в 18:15

Другие вопросы по тегам:

Похожие вопросы: