O script funciona a partir da linha de comando, mas não de um comando no Application Finder Launcher

0

Eu escrevi um script bash encontrado no diretório:

/home/harmelodic/.Jetbrains/CLion.sh

que realiza o seguinte:

#!/bin/sh

./clion*/bin/clion.sh

Isso é para executar o script clion.sh encontrado em:

/home/matthew/.Jetbrains/clion-2016.2.3/bin/clion.sh

Se eu abrir um terminal em /home/harmelodic/.Jetbrains/ e executar:

$ ./CLion.sh

Ele executa e abre com êxito o IDE do CLion.

No entanto, se eu usar um ativador do Localizador de Aplicativos para executar um Command para executar o script (conforme mostrado abaixo), o IDE do CLion não será aberto.

Estou completamente perplexo. Eu pensei que a entrada Command executaria o script bem, mas isso não acontece. Eu assegurei que o script é executável e que ele é executado via terminal, mas ele se recusa a executar através do launcher encontrado no Application Finder.

Por que e como eu corrijo isso?

    
por Harmelodic 29.10.2016 / 18:25

1 resposta

1

Bem, tivemos um erro no PEBCAK ...

Por engano, pensei que, se eu executasse o script, o script saberia automaticamente onde estava e usaria seu local atual como um caminho relativo.
Este não é o caso, acontece. O script tratará qualquer local do qual o usuário esteja executando o script como o caminho a ser usado ao se referir a caminhos relativos.

Isso significa que, se eu for para /home/harmelodic/ e executar:

$ ./.Jetbrains/CLion.sh

O script falharia, pois procuraria /clion*/bin/clion.sh em:

/home/harmelodic/

em vez de

/home/harmelodic/.Jetbrains/

A solução foi obter o diretório atual do script e, em seguida, executar o comando usando o diretório atual combinado com o caminho relativo para imitar um caminho relativo enquanto realmente estiver usando caminhos absolutos:

#!/bin/sh

CURRENT_DIR='dirname $0'

$CURRENT_DIR/clion*/bin/clion.sh

Isso funciona em qualquer diretório, o que significa que ele funciona dentro de um iniciador do Application Finder.

    
por Harmelodic 29.10.2016 / 19:12