Se o uso de dirname $0
é um problema ou não, dependerá de como é usado. Sem mais detalhes, não podemos responder a isso.
Se (a) o uso de dirname $0
for um problema e (b) você não puder alterar o script, a solução é substituir o link flexível ~/sc/gremlin
por um script:
#!/bin/sh
exec ~/../gremlin "$@"
Dessa forma, ~/../gremlin
será executado com um $0
correto.
O uso de exec
significa que o processo que está executando o script ~/../gremlin
substituirá o processo que está executando ~/sc/gremlin
. Isso é mais eficiente do que manter os dois processos em volta até que ~/../gremlin
seja concluído.