Obtenha o diretório de contêiner mais facilmente

1

Eu tenho um script aqui:

$GOPATH/
     src/
     build.sh

e no build.sh eu tenho:

export GOPATH="$(cd $(dirname "$BASH_SOURCE") && pwd)"

existe uma maneira mais curta de obter o diretório contendo build.sh?

    
por Alexander Mills 19.10.2018 / 08:52

2 respostas

2

Para obter o diretório no qual o script está localizado, use:

readlink -f $(dirname $0)

Como dito na man page bash, $0 está configurado para o nome do arquivo.

readlink -f obtém o caminho absoluto desse diretório.

    
por 19.10.2018 / 09:14
0

Estendendo a ideia BASH_SOURCE, verifique se ela contém um caminho absoluto; em caso afirmativo, use-o diretamente, caso contrário, preencha o PWD. Depois, retire a barra final e qualquer coisa depois dela, deixando apenas o diretório que contém:

case ${BASH_SOURCE[0]} in
  ( /* )
        p=${BASH_SOURCE[0]}
        ;;
  ( * )
        p=${PWD}/${BASH_SOURCE[0]}
        ;;
esac

p=${p%/*}
printf "%s\n" "$p"
    
por 23.10.2018 / 03:14