Obter diretório do qual o script foi chamado

10

Eu tenho um script doSmthem /usr/bin. É possível obter e imprimir o diretório em que o script foi chamado ?

Então, se eu ligar a doSmthpartir /home/meda saída será /home/me.

Primož Kralj
fonte
Em que língua?
Jordanm 25/10
Uhh, em bash :)
Primož Kralj

Respostas:

11

Quando você invoca um comando no shell, o novo processo herda o diretório de trabalho do pai. Aqui estão duas maneiras de obter o diretório de trabalho:

echo "$PWD" # variable
pwd         # builtin command
jordanm
fonte
1

Por "diretório que foi chamado de", você parece se referir ao seu diretório de trabalho. Você pode alterar isso dentro do script usando, por exemplo,, cdmas antes de fazê-lo, pwdo imprimirá. Provavelmente também estará na variável$PWD

Se você precisar do diretório de trabalho inicial após alterá-lo, salve-o na parte superior do seu script (antes de alterá-lo)

#!/bin/bash
initial_wd=`pwd`

# ... do a lot of stuff ...
# ⋮

cd "$initial_wd"

Se você estiver usando isso para voltar ao diretório em que iniciou, consulte também pushde popd.

derobert
fonte
3
No bash, também há "$ OLDPWD".
Jordanm 25/10
@jordanm Na verdade, existe, mas isso não será necessariamente o diretório de trabalho inicial (por exemplo, se você já usou cdduas vezes)
derobert
$ OLDPWD é o que eu preciso; Eu executo scripts bash a partir do prompt do CMD no Win7 e essa era a variável de ambiente que continha o diretório do qual eu executava o script. Cheers
Darren Bishop