Outra variante para obter o script dir:
DIR="$(cd "$(dirname "$0")" && pwd)"
então você pode chamar script com
$DIR/script.sh
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")
Outra variante para obter o script dir:
DIR="$(cd "$(dirname "$0")" && pwd)"
então você pode chamar script com
$DIR/script.sh
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)
Tags shell-script