¿Guardar directorio actual en variable usando Bash?

110

Lo que estoy tratando de hacer es encontrar el directorio de trabajo actual y guardarlo en una variable, para poder ejecutarlo export PATH=$PATH:currentdir+somethingelse. No estoy completamente seguro de si tienen una variable que contenga cwd de forma predeterminada.

¿Cómo guardo el directorio actual en variable usando Bash?

Estúpido gato gordo
fuente
así que para guardarlo en una variable haría mydir =. ?
Stupid.Fat.Cat
1
sí, acabo de probar con mydir =. luego ls $ mydir, pero es relativo, por lo que será el pwd desde donde lo ejecute
mcalex
¡Gracias! Esperemos que esto funcione para mí
Stupid.Fat.Cat
Oh, tenía algunos espacios. tt $ {PWD} debería haber funcionado. jaja. ...
whoops

Respuestas:

188

Esto guarda la ruta absoluta del directorio de trabajo actual a la variable cwd:

cwd=$(pwd)

En su caso, simplemente puede hacer:

export PATH=$PATH:$(pwd)+somethingelse
sampson-chen
fuente
1
por alguna razón, si cambio a otro directorio, esto también actualiza la cwdvariable. Como si estuviera llamando a la pwdfunción cada vez ... dpaste.de/Kn7F ¿Cómo puedo evitar eso?
tutuca
1
$CWDpuede ser una variable de entorno especial (reservada) en su shell. En su lugar, $CWD_MY_VAR
pruebe con
Usar comillas invertidas hace lo mismo.
tutuca
1
¿Por qué no usar "$PWD"?
leetbacoon
28

Tengo lo siguiente en mi .bash_profile:

function mark {
    export $1=`pwd`;
}

así que cada vez que quiero recordar un directorio, puedo escribir, por ejemplo, marcar allí .

Luego, cuando quiero volver a esa ubicación, simplemente escribo cd $ allí

gerardw
fuente
Funciona bien, pero para rutas con espacios, por ejemplo, "Google Drive", debe hacerlo cd "$foo"para que se lea toda la ruta
mercergeoinfo
3
Para evitar el problema con espacios en el cambio de ruta export $1=`pwd` para export $1="`pwd`" y luego cuando se llama a este tipo de caminos utilizan cd "$foo"en lugar de sólocd $foo
mercergeoinfo
mercergeoinfo: Estrictamente hablando, las comillas en export $1="`pwd`"no son necesarias, ya que la división de palabras no ocurre en el lado derecho de una tarea, aunque es bueno acostumbrarse a las citas de expansiones.
Larry
2
Véase también cdable_varspara escribir solocd there
John Cummings
4

Tu tarea tiene un extra $:

export PATH=$PATH:${PWD}:/foo/bar
chepner
fuente
3

para una respuesta relativa , use.

prueba con:

$ myDir=.
$ ls $myDir
$ cd /
$ ls $myDir

El primero lsle mostrará todo en el directorio actual, el segundo le mostrará todo en el directorio raíz ( /).

mcalex
fuente
0

Una variante más:

export PATH=$PATH:\`pwd`:/foo/bar
tema
fuente
0

Puede usar la variable de construcción de shell PWD, como esta:

export PATH=$PATH:$PWD+somethingelse
a fuego lento
fuente
0

variable de directorio de trabajo actual, es decir, ruta completa / home / dev / other

dir=$PWD

imprimir la ruta completa

echo $dir
Piyush Sharma
fuente