Mantendo sua configuração existente conforme descrito na sua pergunta, modifique client.sh da seguinte forma:
#!/bin/sh
OPTIONS=
this_dir="$(dirname "$(realpath "$0")")"
if [ -f "$this_dir/client.l4j.ini" ] ; then
OPTIONS=$(grep -v '^#' "$this_dir/client.l4j.ini" | tr -d "\r" | tr "\n" " ")
fi
java $OPTIONS -jar "$this_dir/client.jar"
Salve, então, reinicie o computador, veja se ele agora é iniciado.
Explicação
-
O arquivo
/etc/xdg/autostartda área de trabalho parece bem, então é mais provável que o script seja executado,client.sh, é a origem do problema - o script
client.shque você postou tinha uma barra invertida extra:\#!/bin/sh, mas normalmente é apenas#!/bin/bashpara especificar o bash ou, no seu caso,#!/bin/shestá bom e deixe seu sistema decidir qualshdeve correr, bater ou não. - você disse que
client.shnão funciona quando executado em outro lugar, mas funciona quando chamado do mesmo diretório que contémclient.sh, além de verclient.shfazer referências a nomes de arquivos diretamente sem outro código esclarecendo caminhos, o que sugere problemas de caminho - fazer referência a nomes de arquivos diretamente, pois isso funciona somente quando o diretório de trabalho atual contém esses arquivos; portanto, para lidar com usos quando você não está executando
client.shno diretório que contém, precisamos adicionar código extra para ajudar o script a determinar caminho -
this_dir="$(dirname "$(realpath "$0")")"é baseado em Bash - consulte um arquivo no mesmo diretório , em que$0é o caminho completo paraclient.sh,realpathresolve caso haja problemas de link sym edirnameapenas obtém o caminho, excetoclient.sh, obtendo assim o diretório que o contém, salvando-o$this_dir -
$this_dir/client.l4j.ini: contendo diretório + arquivo, assim o script pode encontrar corretamenteclient.l4j.ini -
$this_dir/client.jar: contendo diretório + arquivo, assim o script pode encontrar corretamenteclient.jar
Portanto, agora que o script pode encontrar corretamente todos os arquivos necessários para execução, e desde que você reinicie para torná-lo efetivo, ele deve ser executado agora.