Instalando o jogo tar.xz (libGLU.so) [fechado]

0

Desempacotou o jogo, executando sh start.sh em:

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 "$@" 

A expectativa era de que a pergunta seria aceita como pergunta específica de erro.

    
por janat08 09.06.2016 / 00:33

1 resposta

1

O erro específico que você está recebendo é por causa da maneira como você está tentando executar o script (e a maneira mais estranha como o script é escrito).

Quando um script é executado, o parâmetro posicional 0 contém o nome pelo qual o script foi invocado, por exemplo, path/to/start.sh - ou simplesmente ./start.sh se for chamado a partir do diretório atual. A sintaxe de expansão de parâmetro ${0%/*} remove o sufixo mais curto de $0 matching /* deixando (respectivamente) path/to ou apenas . e o script tenta alterar para este diretório - em outras palavras, para o diretório pai de start.sh

No entanto, quando você usa sh start.sh (além de executar o script usando sh em vez do pretendido /bin/bash ), $0 é igual a start.sh . Como não há correspondência / , ${0%/*} não remove nada de $0 , resultando no script tentando executar o comando cd start.sh , que obviamente falha porque start.sh é um arquivo e não um diretório.

A solução é executar o script da maneira pretendida pelo autor - ou seja, garantindo que ele seja executável

chmod +x start.sh

e, em seguida, executá-lo diretamente, por exemplo,

./start.sh
    
por steeldriver 09.06.2016 / 03:52