Pasta onde o script bash reside quando executado via ln -s

1

Em / usr / local / bin eu tenho um 'ln -s' para /usr/local/foo/bash.script , e neste último script eu quero saber o diretório atual / usr / local / foo , para que eu possa executar um script secundário a partir dessa pasta.

Agora, tentei dirname $ 0 , mas isso me dá a pasta / usr / local / bin . O que devo usar no bash.script para obter a pasta / usr / local / foo ?

    
por Egon Willighagen 31.01.2010 / 12:33

1 resposta

5

tente readlink , por exemplo

d=$0

while readlink $d >/dev/null; do
  d='readlink $d'
done
echo $d

EDITAR :

Eu não tenho certeza se isso funciona em outro sistema operacional Unix, mas se você estiver no linux, o acima pode ser simplificado usando

d='readlink -f $0'

echo $d

veja

readlink --help
    
por 31.01.2010 / 12:55

Tags