Como executar o script localizado no mesmo diretório do script atual?

2

Por que os scripts de shell são tão difíceis de desenvolver? No NodeJS eu poderia simplesmente fazer:

require('./script')

e sempre exigirá script relativo ao script atual. Mas se eu tentar isso no shell / bash:

./script.sh

ele procurará um script relativo a cwd ( pwd ). Parece que o ponto significa cwd ( pwd ) e não o diretório onde o script atual está localizado como eu esperava.

line 8: ./script.sh: No such file or directory

Como executar script relativo ao diretório onde o script de execução atual está localizado?

Eu tentei

/bin/bash script.sh

mas recebendo erro:

/bin/bash: script.sh: No such file or directory

Então tentei

script.sh

Tem esse erro

line 8: script.sh: command not found

Apenas a solução seguinte funcionou bem, mas o problema é que é ilegível:

$("$(dirname "$(realpath "$0")")/script.sh")
    
por happy_marmoset 14.07.2016 / 10:07

2 respostas

4

Outra variante para obter o script dir:

DIR="$(cd "$(dirname "$0")" && pwd)"

então você pode chamar script com

$DIR/script.sh
    
por 14.07.2016 / 11:01
1

Infelizmente esse é o caminho a percorrer.

Outra maneira (que eu prefiro) é fazer o cd no diretório atual no começo de seus scripts como este:

cd $(dirname $0)
    
por 14.07.2016 / 10:15