Como encontrar o diretório em que um script bash está localizado de dentro do script

Como encontrar o diretório em que um script bash está localizado de dentro do script
Ao trabalhar com scripts Bash, é útil conhecer o local do script. Isso pode ser especialmente útil ao trabalhar com caminhos relativos de arquivo ou ao tentar executar outros scripts ou comandos de dentro do script. Neste artigo, vamos dar uma olhada em algumas maneiras diferentes de determinar o diretório de um script de bash de dentro do próprio script.

Como encontrar o diretório em que um script bash está localizado de dentro do script

Durante o script de bash, você pode precisar da localização do script para automatizar várias tarefas. Existem dois tipos de caminhos no Linux:

  • Caminho de parentes: Parente é o diretório de trabalho atual.
  • Caminho absoluto: Este é o caminho completo do diretório e arquivos.

Uma das maneiras mais comuns de determinar a localização de um script bash é usar o PWD comando. O PWD comando (Diretório de trabalho de impressão) mostrará o diretório atual.

Então, em muitas situações, simplesmente usando PWD O comando não funciona, pois dá apenas o caminho do diretório de trabalho atualmente.

Por exemplo, se o script estiver no Transferências diretório e sendo executado do Área de Trabalho então a saída conterá o /home/usr/desktop Não é a localização do arquivo de script do Bash que é /home/usr/downloads.

Este tutorial é sobre como obter o caminho do diretório no qual o arquivo de scripts do Bash está localizado de dentro do script.

Como obter o caminho do diretório onde o arquivo de scripts do Bash está localizado

Outra maneira de determinar o diretório de um script bash é usar o Dirname comando. O Dirname O comando segue um caminho de arquivo como argumento e retorna a parte do diretório do caminho.

Usar Dirname Comando para determinar o diretório de um script, você chamaria o comando com o caminho até os últimos componentes que não são de slash para o script como o argumento.

Para mais detalhes sobre Dirname Execute os seguintes comandos no terminal:

$ Man Dirname

Apenas Dirname não vai funcionar, precisamos de outro comando que seja readlink. O readlink A impressão de comando resolveu o link simbólico. Obtenha mais informações sobre este comando em execução:

$ Man ReadLink

Agora, Crie um script:

$ sudo nano myscript.sh

E tipo:

#!/BIN/BASH
eco "O caminho do script Bash é $ (Dirname -" $ (readlink -f - "$ 0") ";)";

Para executar o uso do script:

$ Bash MyScript.sh

Vamos mudar o diretório e ver qual é a saída:

Observação: Em um caso, o script acima não funcionará se o arquivo for adquirido em vez de executar, como pode ser visto na seguinte saída:

A saída é /home/sam/desktop enquanto o arquivo de script está presente no /Home/Sam diretório.

Conclusão

Em conclusão, existem várias maneiras de determinar o diretório de um script bash de dentro do próprio script. O Dirname juntamente com readlink O utilitário pode ser usado para determinar o diretório de um script. No entanto, simplesmente usando PWD O comando não funciona, pois fornece apenas o diretório de trabalho atualmente.