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:
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.