Veja se um dos dois atende:
dir="$(dirname $0)"
if dir="."; then
echo $PWD
else
echo $dir
fi
------------------------------------------------------
SCRIPT=$(readlink -f $0)
SCRIPTPATH=`dirname $SCRIPT`
echo $SCRIPTPATH
________________________________
De: shell-***@yahoogrupos.com.br <shell-***@yahoogrupos.com.br> em nome de Tiago Tarifa Munhoz ***@gmail.com [shell-script] <shell-***@yahoogrupos.com.br>
Enviado: quinta-feira, 9 de agosto de 2018 11:23
Para: grupo shell script
Assunto: Re: [shell-script] Pegar o diretório onde está o script
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 ***@gmail.com<mailto:***@gmail.com> [shell-script] <shell-***@yahoogrupos.com.br<mailto:shell-***@yahoogrupos.com.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?
***@jxqe:/var/www# echo $PWD
/var/www
***@jxqe:/var/www# cd /tmp
***@jxqe:/tmp# echo $PWD
/tmp
Em qui, 9 de ago de 2018 às 10:37, Tiago Tarifa Munhoz ***@gmail.com<mailto:***@gmail.com> [shell-script] <shell-***@yahoogrupos.com..br<mailto:shell-***@yahoogrupos.com.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.