¿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?


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

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í


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

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 ( /).


0

Una variante más:

export PATH=$PATH:\`pwd`:/foo/bar

0

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

export PATH=$PATH:$PWD+somethingelse

0

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

dir=$PWD

imprimir la ruta completa

echo $dir
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.