Eu preciso executar um script que acesse um arquivo no mesmo caminho em que está localizado.
Por exemplo: eu tenho o script /home/me/folder/script.sh
e esse script acessará o arquivo /home/me/folder/myfile
. Como o arquivo está no mesmo caminho do script, apenas uso o nome myfile
, não o caminho completo.
Mas se eu executar /tmp/
, como:
/tmp$ /home/me/folder/script.sh
isso me dá:
myfile: No such file or directory
Então, como posso dizer no script que o arquivo está no mesmo caminho que o próprio script?
shell
scripting
shell-script
path
Tom Brito
fonte
fonte
Respostas:
Que tal
$(dirname "$0")/myfile
?fonte
Você não pode saber em todas as circunstâncias, mas frequentemente (nem sempre) quando você executa um script por caminho, em vez de permitir que o shell procure
$PATH
, o caminho para o script estará$0
. Você pode usardirname "$0"
ou${0%/*}
para obter o caminho.fonte
Normalmente, eu faria algo assim no início do meu script:
Ou, para obter o nome do caminho completo no diretório do script (em vez de um nome de caminho relativo):
Depois, faça a referência
${SCRIPTDIR}
onde for necessário.fonte