Obtener el directorio desde el que se llamó el script

10

Tengo un guión doSmthadentro /usr/bin. ¿Es posible obtener e imprimir el directorio desde el que se llamó el script ?

Entonces si llamo doSmthdesde /home/mela salida será /home/me.

Primož Kralj
fuente
¿En que idioma?
jordanm
Uhh, en bash :)
Primož Kralj

Respuestas:

11

Cuando invoca un comando en el shell, el nuevo proceso hereda el directorio de trabajo del padre. Aquí hay dos formas de obtener el directorio de trabajo:

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

Por "directorio desde el que se llamó" parece que se refiere a su directorio de trabajo. Puede cambiar esto dentro del script usando, por ejemplo cd, pero antes de hacerlo, pwdlo imprimirá. También es probable que esté en la variable$PWD

Si necesita el directorio de trabajo inicial después de cambiarlo, simplemente guárdelo en la parte superior de su script (antes de cambiarlo)

#!/bin/bash
initial_wd=`pwd`

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

cd "$initial_wd"

Si está utilizando esto para volver al directorio en el que comenzó, consulte también pushdy popd.

derobert
fuente
3
En bash, también hay "$ OLDPWD".
jordanm
@jordanm De hecho lo hay, pero ese no será necesariamente el directorio de trabajo inicial (por ejemplo, si lo ha usado cddos veces)
derobert
$ OLDPWD es lo que necesito; Ejecuté scripts de bash desde CMD Prompt en Win7 y esta fue la variable de entorno que contenía el directorio desde el que ejecuté el script. Saludos
Darren Bishop