Um executável pode saber onde está armazenado?

4

Um executável pode saber onde está armazenado?

Para meu projeto de código aberto, escrevi um pequeno script para automatizar algumas operações. O script está na raiz do projeto e executa suas tarefas em todos os arquivos abaixo. As pessoas têm os arquivos de projeto em seus próprios computadores, em seu caminho favorito, portanto, não posso simplesmente codificar cd /home/nico/projects/theproject no início do script. Eu não quero forçar as pessoas a cd manualmente para o diretório do projeto toda vez antes de executar qualquer um. Eu gostaria que as pessoas pudessem usar um atalho do Gnome para iniciar o script. Para fazer isso, o script precisa saber onde está armazenado.

    
por Nicolas Raoul 07.06.2011 / 08:29

2 respostas

4
#! /bin/bash
echo I am located in $(dirname "$0")
cd "$(dirname "$0")"

Observe que isso pode ser um caminho relativo.

    
por 07.06.2011 / 08:43
4
#! /bin/bash
w=$(cd "$(dirname "$0")" && echo "$PWD")
echo I am located in "$w"

Para construir a resposta do cjm, o acima irá absolutizar o caminho (usando um sub-shell para cd there e echo the $PWD )

    
por 08.06.2011 / 06:27