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: Luiz Carlos Maciel Junior
Subject: Re: [shell-script] Pegar o diretório onde está o script
Date: Thu, 9 Aug 2018 12:13:34 -0300
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1

Oi Tiago,

Partindo da premissa que você acabou de chamar o script, o Bash tem a variável $? que te mostra o último comando executado.

Então você terá nela todo o caminho do seu script, independente do diretório onde você estiver.

Assim funciona?

Abraços

Luiz


Le 09/08/2018 à 11:23, Tiago Tarifa Munhoz address@hidden [shell-script] a écrit :
 
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> 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.



reply via email to

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