Se você estiver usando o bash (ou seja, o script começa com #!/bin/bash
), você pode usar $ BASH_SOURCE para obter o nome do arquivo do script. A partir disso, você pode obter o diretório em:
mydir="$(dirname "$BASH_SOURCE")"
... e depois usá-lo para encontrar arquivos relativos ao script, por exemplo cp "$mydir/fileInTheSameFolder" /tmp
(e por favor use sempre aspas duplas em volta, como fiz aqui).
Observe que isso pode ser um caminho relativo; por exemplo, se o script foi executado a partir de um shell interativo com ./scriptname.command
, ele será exibido como ".". Isso não deve ser um problema, a menos que o cd do script esteja em outro lugar, mas se você precisar do caminho completo, poderá usá-lo:
mydir="$(cd "$(dirname "$BASH_SOURCE")" && pwd)" || {
echo "Error getting script directory" >&2
exit 1
}
Ou, poderia apenas cd
para o diretório do script no início do script:
cd "$(dirname "$BASH_SOURCE")" || {
echo "Error getting script directory" >&2
exit 1
}