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/autostart
da área de trabalho parece bem, então é mais provável que o script seja executado,client.sh
, é a origem do problema - o script
client.sh
que você postou tinha uma barra invertida extra:\#!/bin/sh
, mas normalmente é apenas#!/bin/bash
para especificar o bash ou, no seu caso,#!/bin/sh
está bom e deixe seu sistema decidir qualsh
deve correr, bater ou não. - você disse que
client.sh
não funciona quando executado em outro lugar, mas funciona quando chamado do mesmo diretório que contémclient.sh
, além de verclient.sh
fazer 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.sh
no 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
,realpath
resolve caso haja problemas de link sym edirname
apenas 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.