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

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

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


From: Vinicius Costa Carvalho
Subject: Re: [shell-script] Pegar o diretório onde está o script
Date: Thu, 9 Aug 2018 11:33:06 -0300

Talvez assim então:

dir=${0%/*}

[]s,

2018-08-09 11:23 GMT-03:00 Tiago Tarifa Munhoz address@hidden [shell-script] <address@hidden>:
 

Raul e Luiz Carlos, obrigado pelas respostas!

Acho que não me expressei bem. Vou exemplificar melhor:

Dentro de um script, quando eu quero pegar o diretório onde meu script está, normalmente eu uso isto:
dir="$(dirname $(readlink -e $0))"

se ele estiver sendo executado dentro de /tmp/teste/meuscript.sh, a variável $dir terá o seguinte conteúdo:
'/tmp/teste'
independente de qual diretório estou para chamar o meu script.

Se eu estiver em '/home/tiago' e executar '/tmp/teste/meuscript.sh' o valor de $dir não muda

a variável do sistema $PWD e o comando pwd retornam o diretório onde meu usuário está, ou seja, '/home/tiago'

O problema dos comandos dirname e readlink é que não são internos do bash e portando mais demorados para executá-los.
O "capricho" que eu quero é o bash, de alguma forma, me retornar este mesmo valor de $dir citado acima





Em 9 de agosto de 2018 11:01, Raul Libório address@hidden [shell-script] <address@hidden.br> escreveu:
 

Não sei se entendi bem, mas a variável PWD mostra qual o seu diretório corrente.
Então, se no começo do script, você entrar no mesmo diretório que ele está e depois extrair o valor de PWD, vai ter o caminho do script. Deu pra entender?

root@jxqe:/var/www# echo $PWD
/var/www
root@jxqe:/var/www# cd /tmp
root@jxqe:/tmp# echo $PWD
/tmp



Em qui, 9 de ago de 2018 às 10:37, Tiago Tarifa Munhoz address@hidden [shell-script] <address@hidden..br> 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.



--
Raul Libório
http://rauhmaru.blogspot.com/
openSUSE Member | Linux User #4444581

/etc/httpd/conf.d/ssl.conf:7
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned.





--
Vinicius Costa Carvalho

"Se enxerguei mais longe, foi porque me apoiei sobre os ombros de gigantes."
Isaac Newton

reply via email to

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