shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Pegar o diretório onde está o script


From: Rogerio Batista
Subject: Re: [shell-script] Re: Pegar o diretório onde está o script
Date: Thu, 9 Aug 2018 15:02:38 -0300

  DIR=`dirname $0`
  [ ${DIR} = "." ];DIR=`pwd`


Em 9 de agosto de 2018 14:47, Maik Alberto address@hidden [shell-script] <address@hidden> escreveu:
 

Vê se isso da certo:


dir=${0%/*}
echo ${dir/./$PWD}




De: address@hidden.br <address@hidden.br> em nome de Tiago Tarifa Munhoz address@hidden [shell-script] <address@hidden.br>
Enviado: quinta-feira, 9 de agosto de 2018 13:29
Para: grupo shell script
Assunto: [shell-script] Re: Pegar o diretório onde está o script
 
 

Lendo o manual do bash menos "porcamente" eu cheguei na solução abaixo:
if [[ "$0" =~ ^\. ]]
then
    echo "achou o . :$PWD"
else
    echo "achou o dir: ${0%/*}"
fi


Ou seja, no meu script ficará assim:

if [[ "$0" =~ ^\. ]]
then
    dir="$PWD"
else
    dir="${0%/*}"
fi

A solução é toda em bash, não precisando de comandos externos. Porém se alguém tiver algo mais simples eu agradeço.

Lembrando que a premissa é: usando somente o bash

Agradeço a contribuição de todos até o momento.


Em 9 de agosto de 2018 10:29, Tiago Tarifa Munhoz <address@hidden> escreveu:
Pessoal,

Alguém sabe como pegar o diretório onde está o script sem usar comandos externos, ou seja, usando apenas o bash.
Eu vejo muito scripts usando desta forma:
dir="$(dirname $0)"
Porém se eu chamar o script no diretório onde está o script ele retorna '.'

Eu vi outro que resolve:
dir="$(dirname $(readlink -e $0))"
Porém precisa de 2 subshells para coletar algo que considero simples para o Bash coletar.

Eu pesquisei porcamente no manual do Bash e não achei nada. E no meu ambiente o readlink e dirname são comandos externos.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]