Quando você executa um script bash
, todos os comandos são executados no diretório em que o script é chamado, incluindo pwd
. Por exemplo:
#!/bin/bash
pwd
Se você executar isso a partir de /whatever/path
, ele exibirá /whatever/path
, não importa onde o script seja colocado.
Se você quiser operar em arquivos no diretório de onde você está executando o script, você pode omitir pwd
assim:
chmod +x D3GO
Isso será interpretado como chmod +x /whatever/path/D3GO
se você executá-lo a partir de /whatever/path
, não importando onde o script seja realmente colocado.
Para operar no diretório em que o script está localizado, você pode usar a variável $BASH_SOURCE
. É uma matriz e o primeiro elemento é o caminho para o script em si (por exemplo, /script/directory/myscript.sh
). Você pode combinar isso com o comando dirname
para obter apenas o diretório:
chmod +x 'dirname ${BASH_SOURCE[0]}'/D3GO
Isso procurará D3GO
no diretório em que esse script é colocado, em vez de ser invocado a partir dele. (Obrigado ao @muru por apontar meu erro.)